home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1986-07-08 | 19.6 KB | [TEXT/□□□□] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Mon Jul 7 22:07:42 1986, modified Mon Jul 7 22:07:42 1986, type ASCII, 19555 bytes "xlcont.c" , at 0x4ce3 348 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
| |
100%
| unp64ID
| P64 Guessed entry=$0800, unpacker=$0063
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [□□□□] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 78 6c 63 6f 6e 74 | 2e 63 00 00 00 00 00 00 |..xlcont|.c......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 00 00 00 | 00 01 00 00 00 00 00 00 |.TEXT...|........|
|00000050| 00 00 00 00 00 4c 63 00 | 00 01 5c 9b 36 26 6e 9b |.....Lc.|..\.6&n.|
|00000060| 36 26 6e 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |6&n.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 b6 db 00 00 |........|........|
|00000080| 2f 2a 20 78 6c 63 6f 6e | 74 20 2d 20 78 6c 69 73 |/* xlcon|t - xlis|
|00000090| 70 20 73 70 65 63 69 61 | 6c 20 66 6f 72 6d 73 20 |p specia|l forms |
|000000a0| 2a 2f 0d 2f 2a 09 43 6f | 70 79 72 69 67 68 74 20 |*/./*.Co|pyright |
|000000b0| 28 63 29 20 31 39 38 35 | 2c 20 62 79 20 44 61 76 |(c) 1985|, by Dav|
|000000c0| 69 64 20 4d 69 63 68 61 | 65 6c 20 42 65 74 7a 0d |id Micha|el Betz.|
|000000d0| 09 41 6c 6c 20 52 69 67 | 68 74 73 20 52 65 73 65 |.All Rig|hts Rese|
|000000e0| 72 76 65 64 0d 09 50 65 | 72 6d 69 73 73 69 6f 6e |rved..Pe|rmission|
|000000f0| 20 69 73 20 67 72 61 6e | 74 65 64 20 66 6f 72 20 | is gran|ted for |
|00000100| 75 6e 72 65 73 74 72 69 | 63 74 65 64 20 6e 6f 6e |unrestri|cted non|
|00000110| 2d 63 6f 6d 6d 65 72 63 | 69 61 6c 20 75 73 65 09 |-commerc|ial use.|
|00000120| 2a 2f 0d 0d 23 69 6e 63 | 6c 75 64 65 20 22 78 6c |*/..#inc|lude "xl|
|00000130| 69 73 70 2e 68 22 0d 0d | 23 69 66 64 65 66 20 4d |isp.h"..|#ifdef M|
|00000140| 45 47 41 4d 41 58 0d 6f | 76 65 72 6c 61 79 20 22 |EGAMAX.o|verlay "|
|00000150| 6f 76 65 72 66 6c 6f 77 | 22 0d 23 65 6e 64 69 66 |overflow|".#endif|
|00000160| 0d 0d 2f 2a 20 65 78 74 | 65 72 6e 61 6c 20 76 61 |../* ext|ernal va|
|00000170| 72 69 61 62 6c 65 73 20 | 2a 2f 0d 65 78 74 65 72 |riables |*/.exter|
|00000180| 6e 20 4e 4f 44 45 20 2a | 78 6c 65 6e 76 2c 2a 78 |n NODE *|xlenv,*x|
|00000190| 6c 76 61 6c 75 65 3b 0d | 65 78 74 65 72 6e 20 4e |lvalue;.|extern N|
|000001a0| 4f 44 45 20 2a 73 5f 63 | 61 72 2c 2a 73 5f 63 64 |ODE *s_c|ar,*s_cd|
|000001b0| 72 2c 2a 73 5f 6e 74 68 | 2c 2a 73 5f 67 65 74 2c |r,*s_nth|,*s_get,|
|000001c0| 2a 73 5f 73 76 61 6c 75 | 65 2c 2a 73 5f 73 70 6c |*s_svalu|e,*s_spl|
|000001d0| 69 73 74 2c 2a 73 5f 61 | 72 65 66 3b 0d 65 78 74 |ist,*s_a|ref;.ext|
|000001e0| 65 72 6e 20 4e 4f 44 45 | 20 2a 73 5f 6c 61 6d 62 |ern NODE| *s_lamb|
|000001f0| 64 61 2c 2a 73 5f 6d 61 | 63 72 6f 3b 0d 65 78 74 |da,*s_ma|cro;.ext|
|00000200| 65 72 6e 20 4e 4f 44 45 | 20 2a 73 5f 63 6f 6d 6d |ern NODE| *s_comm|
|00000210| 61 2c 2a 73 5f 63 6f 6d | 61 74 3b 0d 65 78 74 65 |a,*s_com|at;.exte|
|00000220| 72 6e 20 4e 4f 44 45 20 | 2a 74 72 75 65 3b 0d 0d |rn NODE |*true;..|
|00000230| 2f 2a 20 66 6f 72 77 61 | 72 64 20 64 65 63 6c 61 |/* forwa|rd decla|
|00000240| 72 61 74 69 6f 6e 73 20 | 2a 2f 0d 46 4f 52 57 41 |rations |*/.FORWA|
|00000250| 52 44 20 4e 4f 44 45 20 | 2a 62 71 75 6f 74 65 31 |RD NODE |*bquote1|
|00000260| 28 29 3b 0d 46 4f 52 57 | 41 52 44 20 4e 4f 44 45 |();.FORW|ARD NODE|
|00000270| 20 2a 64 65 66 75 6e 28 | 29 3b 0d 46 4f 52 57 41 | *defun(|);.FORWA|
|00000280| 52 44 20 4e 4f 44 45 20 | 2a 6c 65 74 28 29 3b 0d |RD NODE |*let();.|
|00000290| 46 4f 52 57 41 52 44 20 | 4e 4f 44 45 20 2a 70 72 |FORWARD |NODE *pr|
|000002a0| 6f 67 28 29 3b 0d 46 4f | 52 57 41 52 44 20 4e 4f |og();.FO|RWARD NO|
|000002b0| 44 45 20 2a 70 72 6f 67 | 78 28 29 3b 0d 46 4f 52 |DE *prog|x();.FOR|
|000002c0| 57 41 52 44 20 4e 4f 44 | 45 20 2a 64 6f 6c 6f 6f |WARD NOD|E *doloo|
|000002d0| 70 28 29 3b 0d 0d 2f 2a | 20 78 71 75 6f 74 65 20 |p();../*| xquote |
|000002e0| 2d 20 73 70 65 63 69 61 | 6c 20 66 6f 72 6d 20 27 |- specia|l form '|
|000002f0| 71 75 6f 74 65 27 20 2a | 2f 0d 4e 4f 44 45 20 2a |quote' *|/.NODE *|
|00000300| 78 71 75 6f 74 65 28 61 | 72 67 73 29 0d 20 20 4e |xquote(a|rgs). N|
|00000310| 4f 44 45 20 2a 61 72 67 | 73 3b 0d 7b 0d 20 20 20 |ODE *arg|s;.{. |
|00000320| 20 69 66 20 28 61 74 6f | 6d 28 61 72 67 73 29 29 | if (ato|m(args))|
|00000330| 0d 09 78 6c 66 61 69 6c | 28 22 74 6f 6f 20 66 65 |..xlfail|("too fe|
|00000340| 77 20 61 72 67 75 6d 65 | 6e 74 73 22 29 3b 0d 20 |w argume|nts");. |
|00000350| 20 20 20 65 6c 73 65 20 | 69 66 20 28 63 64 72 28 | else |if (cdr(|
|00000360| 61 72 67 73 29 20 21 3d | 20 4e 49 4c 29 0d 09 78 |args) !=| NIL)..x|
|00000370| 6c 66 61 69 6c 28 22 74 | 6f 6f 20 6d 61 6e 79 20 |lfail("t|oo many |
|00000380| 61 72 67 75 6d 65 6e 74 | 73 22 29 3b 0d 20 20 20 |argument|s");. |
|00000390| 20 72 65 74 75 72 6e 20 | 28 63 61 72 28 61 72 67 | return |(car(arg|
|000003a0| 73 29 29 3b 0d 7d 0d 0d | 2f 2a 20 78 66 75 6e 63 |s));.}..|/* xfunc|
|000003b0| 74 69 6f 6e 20 2d 20 73 | 70 65 63 69 61 6c 20 66 |tion - s|pecial f|
|000003c0| 6f 72 6d 20 27 66 75 6e | 63 74 69 6f 6e 27 20 2a |orm 'fun|ction' *|
|000003d0| 2f 0d 4e 4f 44 45 20 2a | 78 66 75 6e 63 74 69 6f |/.NODE *|xfunctio|
|000003e0| 6e 28 61 72 67 73 29 0d | 20 20 4e 4f 44 45 20 2a |n(args).| NODE *|
|000003f0| 61 72 67 73 3b 0d 7b 0d | 20 20 20 20 4e 4f 44 45 |args;.{.| NODE|
|00000400| 20 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 67 | *val;..| /* g|
|00000410| 65 74 20 74 68 65 20 61 | 72 67 75 6d 65 6e 74 20 |et the a|rgument |
|00000420| 2a 2f 0d 20 20 20 20 76 | 61 6c 20 3d 20 78 6c 61 |*/. v|al = xla|
|00000430| 72 67 28 26 61 72 67 73 | 29 3b 0d 20 20 20 20 78 |rg(&args|);. x|
|00000440| 6c 6c 61 73 74 61 72 67 | 28 61 72 67 73 29 3b 0d |llastarg|(args);.|
|00000450| 0d 20 20 20 20 2f 2a 20 | 63 72 65 61 74 65 20 61 |. /* |create a|
|00000460| 20 63 6c 6f 73 75 72 65 | 20 66 6f 72 20 6c 61 6d | closure| for lam|
|00000470| 62 64 61 20 65 78 70 72 | 65 73 73 69 6f 6e 73 20 |bda expr|essions |
|00000480| 2a 2f 0d 20 20 20 20 69 | 66 20 28 63 6f 6e 73 70 |*/. i|f (consp|
|00000490| 28 76 61 6c 29 20 26 26 | 20 63 61 72 28 76 61 6c |(val) &&| car(val|
|000004a0| 29 20 3d 3d 20 73 5f 6c | 61 6d 62 64 61 29 0d 09 |) == s_l|ambda)..|
|000004b0| 76 61 6c 20 3d 20 63 6f | 6e 73 28 76 61 6c 2c 78 |val = co|ns(val,x|
|000004c0| 6c 65 6e 76 29 3b 0d 0d | 20 20 20 20 2f 2a 20 6f |lenv);..| /* o|
|000004d0| 74 68 65 72 77 69 73 65 | 2c 20 67 65 74 20 74 68 |therwise|, get th|
|000004e0| 65 20 76 61 6c 75 65 20 | 6f 66 20 61 20 73 79 6d |e value |of a sym|
|000004f0| 62 6f 6c 20 2a 2f 0d 20 | 20 20 20 65 6c 73 65 20 |bol */. | else |
|00000500| 69 66 20 28 73 79 6d 62 | 6f 6c 70 28 76 61 6c 29 |if (symb|olp(val)|
|00000510| 29 0d 09 76 61 6c 20 3d | 20 78 6c 67 65 74 76 61 |)..val =| xlgetva|
|00000520| 6c 75 65 28 76 61 6c 29 | 3b 0d 0d 20 20 20 20 2f |lue(val)|;.. /|
|00000530| 2a 20 6f 74 68 65 72 77 | 69 73 65 2c 20 69 74 73 |* otherw|ise, its|
|00000540| 20 61 6e 20 65 72 72 6f | 72 20 2a 2f 0d 20 20 20 | an erro|r */. |
|00000550| 20 65 6c 73 65 0d 09 78 | 6c 65 72 72 6f 72 28 22 | else..x|lerror("|
|00000560| 6e 6f 74 20 61 20 66 75 | 6e 63 74 69 6f 6e 22 2c |not a fu|nction",|
|00000570| 76 61 6c 29 3b 0d 0d 20 | 20 20 20 2f 2a 20 72 65 |val);.. | /* re|
|00000580| 74 75 72 6e 20 74 68 65 | 20 66 75 6e 63 74 69 6f |turn the| functio|
|00000590| 6e 20 2a 2f 0d 20 20 20 | 20 72 65 74 75 72 6e 20 |n */. | return |
|000005a0| 28 76 61 6c 29 3b 0d 7d | 0d 0d 2f 2a 20 78 6c 61 |(val);.}|../* xla|
|000005b0| 6d 62 64 61 20 2d 20 73 | 70 65 63 69 61 6c 20 66 |mbda - s|pecial f|
|000005c0| 6f 72 6d 20 27 6c 61 6d | 62 64 61 27 20 2a 2f 0d |orm 'lam|bda' */.|
|000005d0| 4e 4f 44 45 20 2a 78 6c | 61 6d 62 64 61 28 61 72 |NODE *xl|ambda(ar|
|000005e0| 67 73 29 0d 20 20 4e 4f | 44 45 20 2a 61 72 67 73 |gs). NO|DE *args|
|000005f0| 3b 0d 7b 0d 20 20 20 20 | 4e 4f 44 45 20 2a 66 61 |;.{. |NODE *fa|
|00000600| 72 67 73 3b 0d 0d 20 20 | 20 20 2f 2a 20 67 65 74 |rgs;.. | /* get|
|00000610| 20 74 68 65 20 66 6f 72 | 6d 61 6c 20 61 72 67 75 | the for|mal argu|
|00000620| 6d 65 6e 74 20 6c 69 73 | 74 20 2a 2f 0d 20 20 20 |ment lis|t */. |
|00000630| 20 66 61 72 67 73 20 3d | 20 78 6c 6d 61 74 63 68 | fargs =| xlmatch|
|00000640| 28 4c 49 53 54 2c 26 61 | 72 67 73 29 3b 0d 0d 20 |(LIST,&a|rgs);.. |
|00000650| 20 20 20 2f 2a 20 63 72 | 65 61 74 65 20 61 20 6e | /* cr|eate a n|
|00000660| 65 77 20 66 75 6e 63 74 | 69 6f 6e 20 64 65 66 69 |ew funct|ion defi|
|00000670| 6e 69 74 69 6f 6e 20 2a | 2f 0d 20 20 20 20 72 65 |nition *|/. re|
|00000680| 74 75 72 6e 20 28 63 6f | 6e 73 28 63 6f 6e 73 28 |turn (co|ns(cons(|
|00000690| 73 5f 6c 61 6d 62 64 61 | 2c 63 6f 6e 73 28 66 61 |s_lambda|,cons(fa|
|000006a0| 72 67 73 2c 61 72 67 73 | 29 29 2c 78 6c 65 6e 76 |rgs,args|)),xlenv|
|000006b0| 29 29 3b 0d 7d 0d 0d 2f | 2a 20 78 62 71 75 6f 74 |));.}../|* xbquot|
|000006c0| 65 20 2d 20 62 61 63 6b | 20 71 75 6f 74 65 20 73 |e - back| quote s|
|000006d0| 70 65 63 69 61 6c 20 66 | 6f 72 6d 20 2a 2f 0d 4e |pecial f|orm */.N|
|000006e0| 4f 44 45 20 2a 78 62 71 | 75 6f 74 65 28 61 72 67 |ODE *xbq|uote(arg|
|000006f0| 73 29 0d 20 20 4e 4f 44 | 45 20 2a 61 72 67 73 3b |s). NOD|E *args;|
|00000700| 0d 7b 0d 20 20 20 20 4e | 4f 44 45 20 2a 65 78 70 |.{. N|ODE *exp|
|00000710| 72 3b 0d 0d 20 20 20 20 | 2f 2a 20 67 65 74 20 74 |r;.. |/* get t|
|00000720| 68 65 20 65 78 70 72 65 | 73 73 69 6f 6e 20 2a 2f |he expre|ssion */|
|00000730| 0d 20 20 20 20 65 78 70 | 72 20 3d 20 78 6c 61 72 |. exp|r = xlar|
|00000740| 67 28 26 61 72 67 73 29 | 3b 0d 20 20 20 20 78 6c |g(&args)|;. xl|
|00000750| 6c 61 73 74 61 72 67 28 | 61 72 67 73 29 3b 0d 0d |lastarg(|args);..|
|00000760| 20 20 20 20 2f 2a 20 66 | 69 6c 6c 20 69 6e 20 74 | /* f|ill in t|
|00000770| 68 65 20 74 65 6d 70 6c | 61 74 65 20 2a 2f 0d 20 |he templ|ate */. |
|00000780| 20 20 20 72 65 74 75 72 | 6e 20 28 62 71 75 6f 74 | retur|n (bquot|
|00000790| 65 31 28 65 78 70 72 29 | 29 3b 0d 7d 0d 0d 2f 2a |e1(expr)|);.}../*|
|000007a0| 20 62 71 75 6f 74 65 31 | 20 2d 20 62 61 63 6b 20 | bquote1| - back |
|000007b0| 71 75 6f 74 65 20 68 65 | 6c 70 65 72 20 66 75 6e |quote he|lper fun|
|000007c0| 63 74 69 6f 6e 20 2a 2f | 0d 4c 4f 43 41 4c 20 4e |ction */|.LOCAL N|
|000007d0| 4f 44 45 20 2a 62 71 75 | 6f 74 65 31 28 65 78 70 |ODE *bqu|ote1(exp|
|000007e0| 72 29 0d 20 20 4e 4f 44 | 45 20 2a 65 78 70 72 3b |r). NOD|E *expr;|
|000007f0| 0d 7b 0d 20 20 20 20 4e | 4f 44 45 20 2a 2a 2a 6f |.{. N|ODE ***o|
|00000800| 6c 64 73 74 6b 2c 2a 76 | 61 6c 2c 2a 6c 69 73 74 |ldstk,*v|al,*list|
|00000810| 2c 2a 6c 61 73 74 2c 2a | 6e 65 77 3b 0d 0d 20 20 |,*last,*|new;.. |
|00000820| 20 20 2f 2a 20 68 61 6e | 64 6c 65 20 61 74 6f 6d | /* han|dle atom|
|00000830| 73 20 2a 2f 0d 20 20 20 | 20 69 66 20 28 61 74 6f |s */. | if (ato|
|00000840| 6d 28 65 78 70 72 29 29 | 0d 09 76 61 6c 20 3d 20 |m(expr))|..val = |
|00000850| 65 78 70 72 3b 0d 0d 20 | 20 20 20 2f 2a 20 68 61 |expr;.. | /* ha|
|00000860| 6e 64 6c 65 20 28 63 6f | 6d 6d 61 20 3c 65 78 70 |ndle (co|mma <exp|
|00000870| 72 3e 29 20 2a 2f 0d 20 | 20 20 20 65 6c 73 65 20 |r>) */. | else |
|00000880| 69 66 20 28 63 61 72 28 | 65 78 70 72 29 20 3d 3d |if (car(|expr) ==|
|00000890| 20 73 5f 63 6f 6d 6d 61 | 29 20 7b 0d 09 69 66 20 | s_comma|) {..if |
|000008a0| 28 61 74 6f 6d 28 63 64 | 72 28 65 78 70 72 29 29 |(atom(cd|r(expr))|
|000008b0| 29 0d 09 20 20 20 20 78 | 6c 66 61 69 6c 28 22 62 |).. x|lfail("b|
|000008c0| 61 64 20 63 6f 6d 6d 61 | 20 65 78 70 72 65 73 73 |ad comma| express|
|000008d0| 69 6f 6e 22 29 3b 0d 09 | 76 61 6c 20 3d 20 78 6c |ion");..|val = xl|
|000008e0| 65 76 61 6c 28 63 61 72 | 28 63 64 72 28 65 78 70 |eval(car|(cdr(exp|
|000008f0| 72 29 29 29 3b 0d 20 20 | 20 20 7d 0d 0d 20 20 20 |r)));. | }.. |
|00000900| 20 2f 2a 20 68 61 6e 64 | 6c 65 20 28 28 63 6f 6d | /* hand|le ((com|
|00000910| 6d 61 2d 61 74 20 3c 65 | 78 70 72 3e 29 20 2e 2e |ma-at <e|xpr>) ..|
|00000920| 2e 20 29 20 2a 2f 0d 20 | 20 20 20 65 6c 73 65 20 |. ) */. | else |
|00000930| 69 66 20 28 63 6f 6e 73 | 70 28 63 61 72 28 65 78 |if (cons|p(car(ex|
|00000940| 70 72 29 29 20 26 26 20 | 63 61 72 28 63 61 72 28 |pr)) && |car(car(|
|00000950| 65 78 70 72 29 29 20 3d | 3d 20 73 5f 63 6f 6d 61 |expr)) =|= s_coma|
|00000960| 74 29 20 7b 0d 09 6f 6c | 64 73 74 6b 20 3d 20 78 |t) {..ol|dstk = x|
|00000970| 6c 73 74 61 63 6b 3b 0d | 09 78 6c 73 74 6b 63 68 |lstack;.|.xlstkch|
|00000980| 65 63 6b 28 32 29 3b 0d | 09 78 6c 73 61 76 65 28 |eck(2);.|.xlsave(|
|00000990| 6c 69 73 74 29 3b 0d 09 | 78 6c 73 61 76 65 28 76 |list);..|xlsave(v|
|000009a0| 61 6c 29 3b 0d 09 69 66 | 20 28 61 74 6f 6d 28 63 |al);..if| (atom(c|
|000009b0| 64 72 28 63 61 72 28 65 | 78 70 72 29 29 29 29 0d |dr(car(e|xpr)))).|
|000009c0| 09 20 20 20 20 78 6c 66 | 61 69 6c 28 22 62 61 64 |. xlf|ail("bad|
|000009d0| 20 63 6f 6d 6d 61 2d 61 | 74 20 65 78 70 72 65 73 | comma-a|t expres|
|000009e0| 73 69 6f 6e 22 29 3b 0d | 09 6c 69 73 74 20 3d 20 |sion");.|.list = |
|000009f0| 78 6c 65 76 61 6c 28 63 | 61 72 28 63 64 72 28 63 |xleval(c|ar(cdr(c|
|00000a00| 61 72 28 65 78 70 72 29 | 29 29 29 3b 0d 09 66 6f |ar(expr)|)));..fo|
|00000a10| 72 20 28 6c 61 73 74 20 | 3d 20 4e 49 4c 3b 20 63 |r (last |= NIL; c|
|00000a20| 6f 6e 73 70 28 6c 69 73 | 74 29 3b 20 6c 69 73 74 |onsp(lis|t); list|
|00000a30| 20 3d 20 63 64 72 28 6c | 69 73 74 29 29 20 7b 0d | = cdr(l|ist)) {.|
|00000a40| 09 20 20 20 20 6e 65 77 | 20 3d 20 63 6f 6e 73 61 |. new| = consa|
|00000a50| 28 63 61 72 28 6c 69 73 | 74 29 29 3b 0d 09 20 20 |(car(lis|t));.. |
|00000a60| 20 20 69 66 20 28 6c 61 | 73 74 29 0d 09 09 72 70 | if (la|st)...rp|
|00000a70| 6c 61 63 64 28 6c 61 73 | 74 2c 6e 65 77 29 3b 0d |lacd(las|t,new);.|
|00000a80| 09 20 20 20 20 65 6c 73 | 65 0d 09 09 76 61 6c 20 |. els|e...val |
|00000a90| 3d 20 6e 65 77 3b 0d 09 | 20 20 20 20 6c 61 73 74 |= new;..| last|
|00000aa0| 20 3d 20 6e 65 77 3b 0d | 09 7d 0d 09 69 66 20 28 | = new;.|.}..if (|
|00000ab0| 6c 61 73 74 29 0d 09 20 | 20 20 20 72 70 6c 61 63 |last).. | rplac|
|00000ac0| 64 28 6c 61 73 74 2c 62 | 71 75 6f 74 65 31 28 63 |d(last,b|quote1(c|
|00000ad0| 64 72 28 65 78 70 72 29 | 29 29 3b 0d 09 65 6c 73 |dr(expr)|));..els|
|00000ae0| 65 0d 09 20 20 20 20 76 | 61 6c 20 3d 20 62 71 75 |e.. v|al = bqu|
|00000af0| 6f 74 65 31 28 63 64 72 | 28 65 78 70 72 29 29 3b |ote1(cdr|(expr));|
|00000b00| 0d 09 78 6c 73 74 61 63 | 6b 20 3d 20 6f 6c 64 73 |..xlstac|k = olds|
|00000b10| 74 6b 3b 0d 20 20 20 20 | 7d 0d 0d 20 20 20 20 2f |tk;. |}.. /|
|00000b20| 2a 20 68 61 6e 64 6c 65 | 20 61 6e 79 20 6f 74 68 |* handle| any oth|
|00000b30| 65 72 20 6c 69 73 74 20 | 2a 2f 0d 20 20 20 20 65 |er list |*/. e|
|00000b40| 6c 73 65 20 7b 0d 09 6f | 6c 64 73 74 6b 20 3d 20 |lse {..o|ldstk = |
|00000b50| 78 6c 73 74 61 63 6b 3b | 0d 09 78 6c 73 61 76 65 |xlstack;|..xlsave|
|00000b60| 31 28 76 61 6c 29 3b 0d | 09 76 61 6c 20 3d 20 63 |1(val);.|.val = c|
|00000b70| 6f 6e 73 61 28 4e 49 4c | 29 3b 0d 09 72 70 6c 61 |onsa(NIL|);..rpla|
|00000b80| 63 61 28 76 61 6c 2c 62 | 71 75 6f 74 65 31 28 63 |ca(val,b|quote1(c|
|00000b90| 61 72 28 65 78 70 72 29 | 29 29 3b 0d 09 72 70 6c |ar(expr)|));..rpl|
|00000ba0| 61 63 64 28 76 61 6c 2c | 62 71 75 6f 74 65 31 28 |acd(val,|bquote1(|
|00000bb0| 63 64 72 28 65 78 70 72 | 29 29 29 3b 0d 09 78 6c |cdr(expr|)));..xl|
|00000bc0| 73 74 61 63 6b 20 3d 20 | 6f 6c 64 73 74 6b 3b 0d |stack = |oldstk;.|
|00000bd0| 20 20 20 20 7d 0d 0d 20 | 20 20 20 2f 2a 20 72 65 | }.. | /* re|
|00000be0| 74 75 72 6e 20 74 68 65 | 20 72 65 73 75 6c 74 20 |turn the| result |
|00000bf0| 2a 2f 0d 20 20 20 20 72 | 65 74 75 72 6e 20 28 76 |*/. r|eturn (v|
|00000c00| 61 6c 29 3b 0d 7d 0d 0d | 2f 2a 20 78 73 65 74 71 |al);.}..|/* xsetq|
|00000c10| 20 2d 20 73 70 65 63 69 | 61 6c 20 66 6f 72 6d 20 | - speci|al form |
|00000c20| 27 73 65 74 71 27 20 2a | 2f 0d 4e 4f 44 45 20 2a |'setq' *|/.NODE *|
|00000c30| 78 73 65 74 71 28 61 72 | 67 73 29 0d 20 20 4e 4f |xsetq(ar|gs). NO|
|00000c40| 44 45 20 2a 61 72 67 73 | 3b 0d 7b 0d 20 20 20 20 |DE *args|;.{. |
|00000c50| 4e 4f 44 45 20 2a 73 79 | 6d 2c 2a 76 61 6c 3b 0d |NODE *sy|m,*val;.|
|00000c60| 0d 20 20 20 20 2f 2a 20 | 68 61 6e 64 6c 65 20 65 |. /* |handle e|
|00000c70| 61 63 68 20 70 61 69 72 | 20 6f 66 20 61 72 67 75 |ach pair| of argu|
|00000c80| 6d 65 6e 74 73 20 2a 2f | 0d 20 20 20 20 66 6f 72 |ments */|. for|
|00000c90| 20 28 76 61 6c 20 3d 20 | 4e 49 4c 3b 20 61 72 67 | (val = |NIL; arg|
|00000ca0| 73 3b 20 29 20 7b 0d 09 | 73 79 6d 20 3d 20 78 6c |s; ) {..|sym = xl|
|00000cb0| 6d 61 74 63 68 28 53 59 | 4d 2c 26 61 72 67 73 29 |match(SY|M,&args)|
|00000cc0| 3b 0d 09 76 61 6c 20 3d | 20 78 6c 65 76 61 72 67 |;..val =| xlevarg|
|00000cd0| 28 26 61 72 67 73 29 3b | 0d 09 78 6c 73 65 74 76 |(&args);|..xlsetv|
|00000ce0| 61 6c 75 65 28 73 79 6d | 2c 76 61 6c 29 3b 0d 20 |alue(sym|,val);. |
|00000cf0| 20 20 20 7d 0d 0d 20 20 | 20 20 2f 2a 20 72 65 74 | }.. | /* ret|
|00000d00| 75 72 6e 20 74 68 65 20 | 72 65 73 75 6c 74 20 76 |urn the |result v|
|00000d10| 61 6c 75 65 20 2a 2f 0d | 20 20 20 20 72 65 74 75 |alue */.| retu|
|00000d20| 72 6e 20 28 76 61 6c 29 | 3b 0d 7d 0d 0d 2f 2a 20 |rn (val)|;.}../* |
|00000d30| 78 73 65 74 66 20 2d 20 | 73 70 65 63 69 61 6c 20 |xsetf - |special |
|00000d40| 66 6f 72 6d 20 27 73 65 | 74 66 27 20 2a 2f 0d 4e |form 'se|tf' */.N|
|00000d50| 4f 44 45 20 2a 78 73 65 | 74 66 28 61 72 67 73 29 |ODE *xse|tf(args)|
|00000d60| 0d 20 20 4e 4f 44 45 20 | 2a 61 72 67 73 3b 0d 7b |. NODE |*args;.{|
|00000d70| 0d 20 20 20 20 4e 4f 44 | 45 20 2a 2a 2a 6f 6c 64 |. NOD|E ***old|
|00000d80| 73 74 6b 2c 2a 70 6c 61 | 63 65 2c 2a 76 61 6c 75 |stk,*pla|ce,*valu|
|00000d90| 65 3b 0d 0d 20 20 20 20 | 2f 2a 20 63 72 65 61 74 |e;.. |/* creat|
|00000da0| 65 20 61 20 6e 65 77 20 | 73 74 61 63 6b 20 66 72 |e a new |stack fr|
|00000db0| 61 6d 65 20 2a 2f 0d 20 | 20 20 20 6f 6c 64 73 74 |ame */. | oldst|
|00000dc0| 6b 20 3d 20 78 6c 73 74 | 61 63 6b 3b 0d 20 20 20 |k = xlst|ack;. |
|00000dd0| 20 78 6c 73 61 76 65 31 | 28 76 61 6c 75 65 29 3b | xlsave1|(value);|
|00000de0| 0d 0d 20 20 20 20 2f 2a | 20 68 61 6e 64 6c 65 20 |.. /*| handle |
|00000df0| 65 61 63 68 20 70 61 69 | 72 20 6f 66 20 61 72 67 |each pai|r of arg|
|00000e00| 75 6d 65 6e 74 73 20 2a | 2f 0d 20 20 20 20 77 68 |uments *|/. wh|
|00000e10| 69 6c 65 20 28 61 72 67 | 73 29 20 7b 0d 0d 09 2f |ile (arg|s) {.../|
|00000e20| 2a 20 67 65 74 20 70 6c | 61 63 65 20 61 6e 64 20 |* get pl|ace and |
|00000e30| 76 61 6c 75 65 20 2a 2f | 0d 09 70 6c 61 63 65 20 |value */|..place |
|00000e40| 3d 20 78 6c 61 72 67 28 | 26 61 72 67 73 29 3b 0d |= xlarg(|&args);.|
|00000e50| 09 76 61 6c 75 65 20 3d | 20 78 6c 65 76 61 72 67 |.value =| xlevarg|
|00000e60| 28 26 61 72 67 73 29 3b | 0d 0d 09 2f 2a 20 63 68 |(&args);|.../* ch|
|00000e70| 65 63 6b 20 74 68 65 20 | 70 6c 61 63 65 20 66 6f |eck the |place fo|
|00000e80| 72 6d 20 2a 2f 0d 09 69 | 66 20 28 73 79 6d 62 6f |rm */..i|f (symbo|
|00000e90| 6c 70 28 70 6c 61 63 65 | 29 29 0d 09 20 20 20 20 |lp(place|)).. |
|00000ea0| 78 6c 73 65 74 76 61 6c | 75 65 28 70 6c 61 63 65 |xlsetval|ue(place|
|00000eb0| 2c 76 61 6c 75 65 29 3b | 0d 09 65 6c 73 65 20 69 |,value);|..else i|
|00000ec0| 66 20 28 63 6f 6e 73 70 | 28 70 6c 61 63 65 29 29 |f (consp|(place))|
|00000ed0| 0d 09 20 20 20 20 70 6c | 61 63 65 66 6f 72 6d 28 |.. pl|aceform(|
|00000ee0| 70 6c 61 63 65 2c 76 61 | 6c 75 65 29 3b 0d 09 65 |place,va|lue);..e|
|00000ef0| 6c 73 65 0d 09 20 20 20 | 20 78 6c 66 61 69 6c 28 |lse.. | xlfail(|
|00000f00| 22 62 61 64 20 70 6c 61 | 63 65 20 66 6f 72 6d 22 |"bad pla|ce form"|
|00000f10| 29 3b 0d 20 20 20 20 7d | 0d 0d 20 20 20 20 2f 2a |);. }|.. /*|
|00000f20| 20 72 65 73 74 6f 72 65 | 20 74 68 65 20 70 72 65 | restore| the pre|
|00000f30| 76 69 6f 75 73 20 73 74 | 61 63 6b 20 66 72 61 6d |vious st|ack fram|
|00000f40| 65 20 2a 2f 0d 20 20 20 | 20 78 6c 73 74 61 63 6b |e */. | xlstack|
|00000f50| 20 3d 20 6f 6c 64 73 74 | 6b 3b 0d 0d 20 20 20 20 | = oldst|k;.. |
|00000f60| 2f 2a 20 72 65 74 75 72 | 6e 20 74 68 65 20 76 61 |/* retur|n the va|
|00000f70| 6c 75 65 20 2a 2f 0d 20 | 20 20 20 72 65 74 75 72 |lue */. | retur|
|00000f80| 6e 20 28 76 61 6c 75 65 | 29 3b 0d 7d 0d 0d 2f 2a |n (value|);.}../*|
|00000f90| 20 70 6c 61 63 65 66 6f | 72 6d 20 2d 20 68 61 6e | placefo|rm - han|
|00000fa0| 64 6c 65 20 61 20 70 6c | 61 63 65 20 66 6f 72 6d |dle a pl|ace form|
|00000fb0| 20 6f 74 68 65 72 20 74 | 68 61 6e 20 61 20 73 79 | other t|han a sy|
|00000fc0| 6d 62 6f 6c 20 2a 2f 0d | 4c 4f 43 41 4c 20 70 6c |mbol */.|LOCAL pl|
|00000fd0| 61 63 65 66 6f 72 6d 28 | 70 6c 61 63 65 2c 76 61 |aceform(|place,va|
|00000fe0| 6c 75 65 29 0d 20 20 4e | 4f 44 45 20 2a 70 6c 61 |lue). N|ODE *pla|
|00000ff0| 63 65 2c 2a 76 61 6c 75 | 65 3b 0d 7b 0d 20 20 20 |ce,*valu|e;.{. |
|00001000| 20 4e 4f 44 45 20 2a 2a | 2a 6f 6c 64 73 74 6b 2c | NODE **|*oldstk,|
|00001010| 2a 66 75 6e 2c 2a 61 72 | 67 31 2c 2a 61 72 67 32 |*fun,*ar|g1,*arg2|
|00001020| 3b 0d 20 20 20 20 69 6e | 74 20 69 3b 0d 0d 20 20 |;. in|t i;.. |
|00001030| 20 20 2f 2a 20 63 68 65 | 63 6b 20 74 68 65 20 66 | /* che|ck the f|
|00001040| 75 6e 63 74 69 6f 6e 20 | 6e 61 6d 65 20 2a 2f 0d |unction |name */.|
|00001050| 20 20 20 20 69 66 20 28 | 28 66 75 6e 20 3d 20 78 | if (|(fun = x|
|00001060| 6c 6d 61 74 63 68 28 53 | 59 4d 2c 26 70 6c 61 63 |lmatch(S|YM,&plac|
|00001070| 65 29 29 20 3d 3d 20 73 | 5f 67 65 74 29 20 7b 0d |e)) == s|_get) {.|
|00001080| 09 6f 6c 64 73 74 6b 20 | 3d 20 78 6c 73 74 61 63 |.oldstk |= xlstac|
|00001090| 6b 3b 0d 09 78 6c 73 74 | 6b 63 68 65 63 6b 28 32 |k;..xlst|kcheck(2|
|000010a0| 29 3b 0d 09 78 6c 73 61 | 76 65 28 61 72 67 31 29 |);..xlsa|ve(arg1)|
|000010b0| 3b 0d 09 78 6c 73 61 76 | 65 28 61 72 67 32 29 3b |;..xlsav|e(arg2);|
|000010c0| 0d 09 61 72 67 31 20 3d | 20 78 6c 65 76 6d 61 74 |..arg1 =| xlevmat|
|000010d0| 63 68 28 53 59 4d 2c 26 | 70 6c 61 63 65 29 3b 0d |ch(SYM,&|place);.|
|000010e0| 09 61 72 67 32 20 3d 20 | 78 6c 65 76 6d 61 74 63 |.arg2 = |xlevmatc|
|000010f0| 68 28 53 59 4d 2c 26 70 | 6c 61 63 65 29 3b 0d 09 |h(SYM,&p|lace);..|
|00001100| 78 6c 6c 61 73 74 61 72 | 67 28 70 6c 61 63 65 29 |xllastar|g(place)|
|00001110| 3b 0d 09 78 6c 70 75 74 | 70 72 6f 70 28 61 72 67 |;..xlput|prop(arg|
|00001120| 31 2c 76 61 6c 75 65 2c | 61 72 67 32 29 3b 0d 09 |1,value,|arg2);..|
|00001130| 78 6c 73 74 61 63 6b 20 | 3d 20 6f 6c 64 73 74 6b |xlstack |= oldstk|
|00001140| 3b 0d 20 20 20 20 7d 0d | 20 20 20 20 65 6c 73 65 |;. }.| else|
|00001150| 20 69 66 20 28 66 75 6e | 20 3d 3d 20 73 5f 73 76 | if (fun| == s_sv|
|00001160| 61 6c 75 65 29 20 7b 0d | 09 6f 6c 64 73 74 6b 20 |alue) {.|.oldstk |
|00001170| 3d 20 78 6c 73 74 61 63 | 6b 3b 0d 09 78 6c 73 61 |= xlstac|k;..xlsa|
|00001180| 76 65 31 28 61 72 67 31 | 29 3b 0d 09 61 72 67 31 |ve1(arg1|);..arg1|
|00001190| 20 3d 20 78 6c 65 76 6d | 61 74 63 68 28 53 59 4d | = xlevm|atch(SYM|
|000011a0| 2c 26 70 6c 61 63 65 29 | 3b 0d 09 78 6c 6c 61 73 |,&place)|;..xllas|
|000011b0| 74 61 72 67 28 70 6c 61 | 63 65 29 3b 0d 09 73 65 |targ(pla|ce);..se|
|000011c0| 74 76 61 6c 75 65 28 61 | 72 67 31 2c 76 61 6c 75 |tvalue(a|rg1,valu|
|000011d0| 65 29 3b 0d 09 78 6c 73 | 74 61 63 6b 20 3d 20 6f |e);..xls|tack = o|
|000011e0| 6c 64 73 74 6b 3b 0d 20 | 20 20 20 7d 0d 20 20 20 |ldstk;. | }. |
|000011f0| 20 65 6c 73 65 20 69 66 | 20 28 66 75 6e 20 3d 3d | else if| (fun ==|
|00001200| 20 73 5f 73 70 6c 69 73 | 74 29 20 7b 0d 09 6f 6c | s_splis|t) {..ol|
|00001210| 64 73 74 6b 20 3d 20 78 | 6c 73 74 61 63 6b 3b 0d |dstk = x|lstack;.|
|00001220| 09 78 6c 73 61 76 65 31 | 28 61 72 67 31 29 3b 0d |.xlsave1|(arg1);.|
|00001230| 09 61 72 67 31 20 3d 20 | 78 6c 65 76 6d 61 74 63 |.arg1 = |xlevmatc|
|00001240| 68 28 53 59 4d 2c 26 70 | 6c 61 63 65 29 3b 0d 09 |h(SYM,&p|lace);..|
|00001250| 78 6c 6c 61 73 74 61 72 | 67 28 70 6c 61 63 65 29 |xllastar|g(place)|
|00001260| 3b 0d 09 73 65 74 70 6c | 69 73 74 28 61 72 67 31 |;..setpl|ist(arg1|
|00001270| 2c 76 61 6c 75 65 29 3b | 0d 09 78 6c 73 74 61 63 |,value);|..xlstac|
|00001280| 6b 20 3d 20 6f 6c 64 73 | 74 6b 3b 0d 20 20 20 20 |k = olds|tk;. |
|00001290| 7d 0d 20 20 20 20 65 6c | 73 65 20 69 66 20 28 66 |}. el|se if (f|
|000012a0| 75 6e 20 3d 3d 20 73 5f | 63 61 72 29 20 7b 0d 09 |un == s_|car) {..|
|000012b0| 6f 6c 64 73 74 6b 20 3d | 20 78 6c 73 74 61 63 6b |oldstk =| xlstack|
|000012c0| 3b 0d 09 78 6c 73 61 76 | 65 31 28 61 72 67 31 29 |;..xlsav|e1(arg1)|
|000012d0| 3b 0d 09 69 66 20 28 28 | 61 72 67 31 20 3d 20 78 |;..if ((|arg1 = x|
|000012e0| 6c 65 76 6d 61 74 63 68 | 28 4c 49 53 54 2c 26 70 |levmatch|(LIST,&p|
|000012f0| 6c 61 63 65 29 29 20 3d | 3d 20 4e 49 4c 29 0d 09 |lace)) =|= NIL)..|
|00001300| 20 20 20 20 78 6c 65 72 | 72 6f 72 28 22 62 61 64 | xler|ror("bad|
|00001310| 20 61 72 67 75 6d 65 6e | 74 20 74 79 70 65 22 2c | argumen|t type",|
|00001320| 61 72 67 31 29 3b 0d 09 | 78 6c 6c 61 73 74 61 72 |arg1);..|xllastar|
|00001330| 67 28 70 6c 61 63 65 29 | 3b 0d 09 72 70 6c 61 63 |g(place)|;..rplac|
|00001340| 61 28 61 72 67 31 2c 76 | 61 6c 75 65 29 3b 0d 09 |a(arg1,v|alue);..|
|00001350| 78 6c 73 74 61 63 6b 20 | 3d 20 6f 6c 64 73 74 6b |xlstack |= oldstk|
|00001360| 3b 0d 20 20 20 20 7d 0d | 20 20 20 20 65 6c 73 65 |;. }.| else|
|00001370| 20 69 66 20 28 66 75 6e | 20 3d 3d 20 73 5f 63 64 | if (fun| == s_cd|
|00001380| 72 29 20 7b 0d 09 6f 6c | 64 73 74 6b 20 3d 20 78 |r) {..ol|dstk = x|
|00001390| 6c 73 74 61 63 6b 3b 0d | 09 78 6c 73 61 76 65 31 |lstack;.|.xlsave1|
|000013a0| 28 61 72 67 31 29 3b 0d | 09 69 66 20 28 28 61 72 |(arg1);.|.if ((ar|
|000013b0| 67 31 20 3d 20 78 6c 65 | 76 6d 61 74 63 68 28 4c |g1 = xle|vmatch(L|
|000013c0| 49 53 54 2c 26 70 6c 61 | 63 65 29 29 20 3d 3d 20 |IST,&pla|ce)) == |
|000013d0| 4e 49 4c 29 0d 09 20 20 | 20 20 78 6c 65 72 72 6f |NIL).. | xlerro|
|000013e0| 72 28 22 62 61 64 20 61 | 72 67 75 6d 65 6e 74 20 |r("bad a|rgument |
|000013f0| 74 79 70 65 22 2c 61 72 | 67 31 29 3b 0d 09 78 6c |type",ar|g1);..xl|
|00001400| 6c 61 73 74 61 72 67 28 | 70 6c 61 63 65 29 3b 0d |lastarg(|place);.|
|00001410| 09 72 70 6c 61 63 64 28 | 61 72 67 31 2c 76 61 6c |.rplacd(|arg1,val|
|00001420| 75 65 29 3b 0d 09 78 6c | 73 74 61 63 6b 20 3d 20 |ue);..xl|stack = |
|00001430| 6f 6c 64 73 74 6b 3b 0d | 20 20 20 20 7d 0d 20 20 |oldstk;.| }. |
|00001440| 20 20 65 6c 73 65 20 69 | 66 20 28 66 75 6e 20 3d | else i|f (fun =|
|00001450| 3d 20 73 5f 6e 74 68 29 | 20 7b 0d 09 6f 6c 64 73 |= s_nth)| {..olds|
|00001460| 74 6b 20 3d 20 78 6c 73 | 74 61 63 6b 3b 0d 09 78 |tk = xls|tack;..x|
|00001470| 6c 73 74 6b 63 68 65 63 | 6b 28 32 29 3b 0d 09 78 |lstkchec|k(2);..x|
|00001480| 6c 73 61 76 65 28 61 72 | 67 31 29 3b 0d 09 78 6c |lsave(ar|g1);..xl|
|00001490| 73 61 76 65 28 61 72 67 | 32 29 3b 0d 09 61 72 67 |save(arg|2);..arg|
|000014a0| 31 20 3d 20 78 6c 65 76 | 6d 61 74 63 68 28 49 4e |1 = xlev|match(IN|
|000014b0| 54 2c 26 70 6c 61 63 65 | 29 3b 0d 09 61 72 67 32 |T,&place|);..arg2|
|000014c0| 20 3d 20 78 6c 65 76 6d | 61 74 63 68 28 4c 49 53 | = xlevm|atch(LIS|
|000014d0| 54 2c 26 70 6c 61 63 65 | 29 3b 0d 09 78 6c 6c 61 |T,&place|);..xlla|
|000014e0| 73 74 61 72 67 28 70 6c | 61 63 65 29 3b 0d 09 66 |starg(pl|ace);..f|
|000014f0| 6f 72 20 28 69 20 3d 20 | 28 69 6e 74 29 67 65 74 |or (i = |(int)get|
|00001500| 66 69 78 6e 75 6d 28 61 | 72 67 31 29 3b 20 69 20 |fixnum(a|rg1); i |
|00001510| 3e 20 30 20 26 26 20 63 | 6f 6e 73 70 28 61 72 67 |> 0 && c|onsp(arg|
|00001520| 32 29 3b 20 2d 2d 69 29 | 0d 09 20 20 20 20 61 72 |2); --i)|.. ar|
|00001530| 67 32 20 3d 20 63 64 72 | 28 61 72 67 32 29 3b 0d |g2 = cdr|(arg2);.|
|00001540| 09 69 66 20 28 63 6f 6e | 73 70 28 61 72 67 32 29 |.if (con|sp(arg2)|
|00001550| 29 0d 09 20 20 20 20 72 | 70 6c 61 63 61 28 61 72 |).. r|placa(ar|
|00001560| 67 32 2c 76 61 6c 75 65 | 29 3b 0d 09 78 6c 73 74 |g2,value|);..xlst|
|00001570| 61 63 6b 20 3d 20 6f 6c | 64 73 74 6b 3b 0d 20 20 |ack = ol|dstk;. |
|00001580| 20 20 7d 0d 0d 20 20 20 | 20 65 6c 73 65 20 69 66 | }.. | else if|
|00001590| 20 28 66 75 6e 20 3d 3d | 20 73 5f 61 72 65 66 29 | (fun ==| s_aref)|
|000015a0| 20 7b 0d 09 6f 6c 64 73 | 74 6b 20 3d 20 78 6c 73 | {..olds|tk = xls|
|000015b0| 74 61 63 6b 3b 0d 09 78 | 6c 73 74 6b 63 68 65 63 |tack;..x|lstkchec|
|000015c0| 6b 28 32 29 3b 0d 09 78 | 6c 73 61 76 65 28 61 72 |k(2);..x|lsave(ar|
|000015d0| 67 31 29 3b 0d 09 78 6c | 73 61 76 65 28 61 72 67 |g1);..xl|save(arg|
|000015e0| 32 29 3b 0d 09 61 72 67 | 31 20 3d 20 78 6c 65 76 |2);..arg|1 = xlev|
|000015f0| 6d 61 74 63 68 28 56 45 | 43 54 2c 26 70 6c 61 63 |match(VE|CT,&plac|
|00001600| 65 29 3b 0d 09 61 72 67 | 32 20 3d 20 78 6c 65 76 |e);..arg|2 = xlev|
|00001610| 6d 61 74 63 68 28 49 4e | 54 2c 26 70 6c 61 63 65 |match(IN|T,&place|
|00001620| 29 3b 20 69 20 3d 20 28 | 69 6e 74 29 67 65 74 66 |); i = (|int)getf|
|00001630| 69 78 6e 75 6d 28 61 72 | 67 32 29 3b 0d 09 78 6c |ixnum(ar|g2);..xl|
|00001640| 6c 61 73 74 61 72 67 28 | 70 6c 61 63 65 29 3b 0d |lastarg(|place);.|
|00001650| 09 69 66 20 28 69 20 3c | 20 30 20 7c 7c 20 69 20 |.if (i <| 0 || i |
|00001660| 3e 3d 20 67 65 74 73 69 | 7a 65 28 61 72 67 31 29 |>= getsi|ze(arg1)|
|00001670| 29 0d 09 20 20 20 20 78 | 6c 65 72 72 6f 72 28 22 |).. x|lerror("|
|00001680| 69 6e 64 65 78 20 6f 75 | 74 20 6f 66 20 72 61 6e |index ou|t of ran|
|00001690| 67 65 22 2c 61 72 67 32 | 29 3b 0d 09 73 65 74 65 |ge",arg2|);..sete|
|000016a0| 6c 65 6d 65 6e 74 28 61 | 72 67 31 2c 69 2c 76 61 |lement(a|rg1,i,va|
|000016b0| 6c 75 65 29 3b 0d 09 78 | 6c 73 74 61 63 6b 20 3d |lue);..x|lstack =|
|000016c0| 20 6f 6c 64 73 74 6b 3b | 0d 20 20 20 20 7d 0d 20 | oldstk;|. }. |
|000016d0| 20 20 20 65 6c 73 65 0d | 09 78 6c 66 61 69 6c 28 | else.|.xlfail(|
|000016e0| 22 62 61 64 20 70 6c 61 | 63 65 20 66 6f 72 6d 22 |"bad pla|ce form"|
|000016f0| 29 3b 0d 7d 0d 09 09 20 | 20 20 20 20 20 20 0d 2f |);.}... | ./|
|00001700| 2a 20 78 64 65 66 75 6e | 20 2d 20 73 70 65 63 69 |* xdefun| - speci|
|00001710| 61 6c 20 66 6f 72 6d 20 | 27 64 65 66 75 6e 27 20 |al form |'defun' |
|00001720| 2a 2f 0d 4e 4f 44 45 20 | 2a 78 64 65 66 75 6e 28 |*/.NODE |*xdefun(|
|00001730| 61 72 67 73 29 0d 20 20 | 4e 4f 44 45 20 2a 61 72 |args). |NODE *ar|
|00001740| 67 73 3b 0d 7b 0d 20 20 | 20 20 72 65 74 75 72 6e |gs;.{. | return|
|00001750| 20 28 64 65 66 75 6e 28 | 61 72 67 73 2c 73 5f 6c | (defun(|args,s_l|
|00001760| 61 6d 62 64 61 29 29 3b | 0d 7d 0d 0d 2f 2a 20 78 |ambda));|.}../* x|
|00001770| 64 65 66 6d 61 63 72 6f | 20 2d 20 73 70 65 63 69 |defmacro| - speci|
|00001780| 61 6c 20 66 6f 72 6d 20 | 27 64 65 66 6d 61 63 72 |al form |'defmacr|
|00001790| 6f 27 20 2a 2f 0d 4e 4f | 44 45 20 2a 78 64 65 66 |o' */.NO|DE *xdef|
|000017a0| 6d 61 63 72 6f 28 61 72 | 67 73 29 0d 20 20 4e 4f |macro(ar|gs). NO|
|000017b0| 44 45 20 2a 61 72 67 73 | 3b 0d 7b 0d 20 20 20 20 |DE *args|;.{. |
|000017c0| 72 65 74 75 72 6e 20 28 | 64 65 66 75 6e 28 61 72 |return (|defun(ar|
|000017d0| 67 73 2c 73 5f 6d 61 63 | 72 6f 29 29 3b 0d 7d 0d |gs,s_mac|ro));.}.|
|000017e0| 0d 2f 2a 20 64 65 66 75 | 6e 20 2d 20 69 6e 74 65 |./* defu|n - inte|
|000017f0| 72 6e 61 6c 20 66 75 6e | 63 74 69 6f 6e 20 64 65 |rnal fun|ction de|
|00001800| 66 69 6e 69 74 69 6f 6e | 20 72 6f 75 74 69 6e 65 |finition| routine|
|00001810| 20 2a 2f 0d 4c 4f 43 41 | 4c 20 4e 4f 44 45 20 2a | */.LOCA|L NODE *|
|00001820| 64 65 66 75 6e 28 61 72 | 67 73 2c 74 79 70 65 29 |defun(ar|gs,type)|
|00001830| 0d 20 20 4e 4f 44 45 20 | 2a 61 72 67 73 2c 2a 74 |. NODE |*args,*t|
|00001840| 79 70 65 3b 0d 7b 0d 20 | 20 20 20 4e 4f 44 45 20 |ype;.{. | NODE |
|00001850| 2a 73 79 6d 2c 2a 66 61 | 72 67 73 3b 0d 0d 20 20 |*sym,*fa|rgs;.. |
|00001860| 20 20 2f 2a 20 67 65 74 | 20 74 68 65 20 66 75 6e | /* get| the fun|
|00001870| 63 74 69 6f 6e 20 73 79 | 6d 62 6f 6c 20 61 6e 64 |ction sy|mbol and|
|00001880| 20 66 6f 72 6d 61 6c 20 | 61 72 67 75 6d 65 6e 74 | formal |argument|
|00001890| 20 6c 69 73 74 20 2a 2f | 0d 20 20 20 20 73 79 6d | list */|. sym|
|000018a0| 20 3d 20 78 6c 6d 61 74 | 63 68 28 53 59 4d 2c 26 | = xlmat|ch(SYM,&|
|000018b0| 61 72 67 73 29 3b 0d 20 | 20 20 20 66 61 72 67 73 |args);. | fargs|
|000018c0| 20 3d 20 78 6c 6d 61 74 | 63 68 28 4c 49 53 54 2c | = xlmat|ch(LIST,|
|000018d0| 26 61 72 67 73 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |&args);.|. /* |
|000018e0| 6d 61 6b 65 20 74 68 65 | 20 73 79 6d 62 6f 6c 20 |make the| symbol |
|000018f0| 70 6f 69 6e 74 20 74 6f | 20 61 20 6e 65 77 20 66 |point to| a new f|
|00001900| 75 6e 63 74 69 6f 6e 20 | 64 65 66 69 6e 69 74 69 |unction |definiti|
|00001910| 6f 6e 20 2a 2f 0d 20 20 | 20 20 78 6c 73 65 74 76 |on */. | xlsetv|
|00001920| 61 6c 75 65 28 73 79 6d | 2c 63 6f 6e 73 28 63 6f |alue(sym|,cons(co|
|00001930| 6e 73 28 74 79 70 65 2c | 63 6f 6e 73 28 66 61 72 |ns(type,|cons(far|
|00001940| 67 73 2c 61 72 67 73 29 | 29 2c 78 6c 65 6e 76 29 |gs,args)|),xlenv)|
|00001950| 29 3b 0d 0d 20 20 20 20 | 2f 2a 20 72 65 74 75 72 |);.. |/* retur|
|00001960| 6e 20 74 68 65 20 66 75 | 6e 63 74 69 6f 6e 20 73 |n the fu|nction s|
|00001970| 79 6d 62 6f 6c 20 2a 2f | 0d 20 20 20 20 72 65 74 |ymbol */|. ret|
|00001980| 75 72 6e 20 28 73 79 6d | 29 3b 0d 7d 0d 0d 2f 2a |urn (sym|);.}../*|
|00001990| 20 78 63 6f 6e 64 20 2d | 20 73 70 65 63 69 61 6c | xcond -| special|
|000019a0| 20 66 6f 72 6d 20 27 63 | 6f 6e 64 27 20 2a 2f 0d | form 'c|ond' */.|
|000019b0| 4e 4f 44 45 20 2a 78 63 | 6f 6e 64 28 61 72 67 73 |NODE *xc|ond(args|
|000019c0| 29 0d 20 20 4e 4f 44 45 | 20 2a 61 72 67 73 3b 0d |). NODE| *args;.|
|000019d0| 7b 0d 20 20 20 20 4e 4f | 44 45 20 2a 6c 69 73 74 |{. NO|DE *list|
|000019e0| 2c 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 66 |,*val;..| /* f|
|000019f0| 69 6e 64 20 61 20 70 72 | 65 64 69 63 61 74 65 20 |ind a pr|edicate |
|00001a00| 74 68 61 74 20 69 73 20 | 74 72 75 65 20 2a 2f 0d |that is |true */.|
|00001a10| 20 20 20 20 66 6f 72 20 | 28 76 61 6c 20 3d 20 4e | for |(val = N|
|00001a20| 49 4c 3b 20 63 6f 6e 73 | 70 28 61 72 67 73 29 3b |IL; cons|p(args);|
|00001a30| 20 61 72 67 73 20 3d 20 | 63 64 72 28 61 72 67 73 | args = |cdr(args|
|00001a40| 29 29 20 7b 0d 0d 09 2f | 2a 20 67 65 74 20 74 68 |)) {.../|* get th|
|00001a50| 65 20 6e 65 78 74 20 63 | 6f 6e 64 69 74 69 6f 6e |e next c|ondition|
|00001a60| 61 6c 20 2a 2f 0d 09 6c | 69 73 74 20 3d 20 63 61 |al */..l|ist = ca|
|00001a70| 72 28 61 72 67 73 29 3b | 0d 0d 09 2f 2a 20 65 76 |r(args);|.../* ev|
|00001a80| 61 6c 75 61 74 65 20 74 | 68 65 20 70 72 65 64 69 |aluate t|he predi|
|00001a90| 63 61 74 65 20 70 61 72 | 74 20 2a 2f 0d 09 69 66 |cate par|t */..if|
|00001aa0| 20 28 63 6f 6e 73 70 28 | 6c 69 73 74 29 20 26 26 | (consp(|list) &&|
|00001ab0| 20 28 76 61 6c 20 3d 20 | 78 6c 65 76 61 6c 28 63 | (val = |xleval(c|
|00001ac0| 61 72 28 6c 69 73 74 29 | 29 29 29 20 7b 0d 0d 09 |ar(list)|))) {...|
|00001ad0| 20 20 20 20 2f 2a 20 65 | 76 61 6c 75 61 74 65 20 | /* e|valuate |
|00001ae0| 65 61 63 68 20 65 78 70 | 72 65 73 73 69 6f 6e 20 |each exp|ression |
|00001af0| 2a 2f 0d 09 20 20 20 20 | 66 6f 72 20 28 6c 69 73 |*/.. |for (lis|
|00001b00| 74 20 3d 20 63 64 72 28 | 6c 69 73 74 29 3b 20 63 |t = cdr(|list); c|
|00001b10| 6f 6e 73 70 28 6c 69 73 | 74 29 3b 20 6c 69 73 74 |onsp(lis|t); list|
|00001b20| 20 3d 20 63 64 72 28 6c | 69 73 74 29 29 0d 09 09 | = cdr(l|ist))...|
|00001b30| 76 61 6c 20 3d 20 78 6c | 65 76 61 6c 28 63 61 72 |val = xl|eval(car|
|00001b40| 28 6c 69 73 74 29 29 3b | 0d 0d 09 20 20 20 20 2f |(list));|... /|
|00001b50| 2a 20 65 78 69 74 20 74 | 68 65 20 6c 6f 6f 70 20 |* exit t|he loop |
|00001b60| 2a 2f 0d 09 20 20 20 20 | 62 72 65 61 6b 3b 0d 09 |*/.. |break;..|
|00001b70| 7d 0d 20 20 20 20 7d 0d | 0d 20 20 20 20 2f 2a 20 |}. }.|. /* |
|00001b80| 72 65 74 75 72 6e 20 74 | 68 65 20 76 61 6c 75 65 |return t|he value|
|00001b90| 20 2a 2f 0d 20 20 20 20 | 72 65 74 75 72 6e 20 28 | */. |return (|
|00001ba0| 76 61 6c 29 3b 0d 7d 0d | 0d 2f 2a 20 78 63 61 73 |val);.}.|./* xcas|
|00001bb0| 65 20 2d 20 73 70 65 63 | 69 61 6c 20 66 6f 72 6d |e - spec|ial form|
|00001bc0| 20 27 63 61 73 65 27 20 | 2a 2f 0d 4e 4f 44 45 20 | 'case' |*/.NODE |
|00001bd0| 2a 78 63 61 73 65 28 61 | 72 67 73 29 0d 20 20 4e |*xcase(a|rgs). N|
|00001be0| 4f 44 45 20 2a 61 72 67 | 73 3b 0d 7b 0d 20 20 20 |ODE *arg|s;.{. |
|00001bf0| 20 4e 4f 44 45 20 2a 2a | 2a 6f 6c 64 73 74 6b 2c | NODE **|*oldstk,|
|00001c00| 2a 6b 65 79 2c 2a 6c 69 | 73 74 2c 2a 63 61 73 65 |*key,*li|st,*case|
|00001c10| 73 2c 2a 76 61 6c 3b 0d | 0d 20 20 20 20 2f 2a 20 |s,*val;.|. /* |
|00001c20| 63 72 65 61 74 65 20 61 | 20 6e 65 77 20 73 74 61 |create a| new sta|
|00001c30| 63 6b 20 66 72 61 6d 65 | 20 2a 2f 0d 20 20 20 20 |ck frame| */. |
|00001c40| 6f 6c 64 73 74 6b 20 3d | 20 78 6c 73 74 61 63 6b |oldstk =| xlstack|
|00001c50| 3b 0d 20 20 20 20 78 6c | 73 61 76 65 31 28 6b 65 |;. xl|save1(ke|
|00001c60| 79 29 3b 0d 0d 20 20 20 | 20 2f 2a 20 67 65 74 20 |y);.. | /* get |
|00001c70| 74 68 65 20 6b 65 79 20 | 65 78 70 72 65 73 73 69 |the key |expressi|
|00001c80| 6f 6e 20 2a 2f 0d 20 20 | 20 20 6b 65 79 20 3d 20 |on */. | key = |
|00001c90| 78 6c 65 76 61 72 67 28 | 26 61 72 67 73 29 3b 0d |xlevarg(|&args);.|
|00001ca0| 0d 20 20 20 20 2f 2a 20 | 66 69 6e 64 20 61 20 63 |. /* |find a c|
|00001cb0| 61 73 65 20 74 68 61 74 | 20 6d 61 74 63 68 65 73 |ase that| matches|
|00001cc0| 20 2a 2f 0d 20 20 20 20 | 66 6f 72 20 28 76 61 6c | */. |for (val|
|00001cd0| 20 3d 20 4e 49 4c 3b 20 | 63 6f 6e 73 70 28 61 72 | = NIL; |consp(ar|
|00001ce0| 67 73 29 3b 20 61 72 67 | 73 20 3d 20 63 64 72 28 |gs); arg|s = cdr(|
|00001cf0| 61 72 67 73 29 29 20 7b | 0d 0d 09 2f 2a 20 67 65 |args)) {|.../* ge|
|00001d00| 74 20 74 68 65 20 6e 65 | 78 74 20 63 61 73 65 20 |t the ne|xt case |
|00001d10| 63 6c 61 75 73 65 20 2a | 2f 0d 09 6c 69 73 74 20 |clause *|/..list |
|00001d20| 3d 20 63 61 72 28 61 72 | 67 73 29 3b 0d 0d 09 2f |= car(ar|gs);.../|
|00001d30| 2a 20 6d 61 6b 65 20 73 | 75 72 65 20 74 68 69 73 |* make s|ure this|
|00001d40| 20 69 73 20 61 20 76 61 | 6c 69 64 20 63 6c 61 75 | is a va|lid clau|
|00001d50| 73 65 20 2a 2f 0d 09 69 | 66 20 28 63 6f 6e 73 70 |se */..i|f (consp|
|00001d60| 28 6c 69 73 74 29 29 20 | 7b 0d 0d 09 20 20 20 20 |(list)) |{... |
|00001d70| 2f 2a 20 63 6f 6d 70 61 | 72 65 20 74 68 65 20 6b |/* compa|re the k|
|00001d80| 65 79 20 6c 69 73 74 20 | 61 67 61 69 6e 73 74 20 |ey list |against |
|00001d90| 74 68 65 20 6b 65 79 20 | 2a 2f 0d 09 20 20 20 20 |the key |*/.. |
|00001da0| 69 66 20 28 28 63 61 73 | 65 73 20 3d 20 63 61 72 |if ((cas|es = car|
|00001db0| 28 6c 69 73 74 29 29 20 | 3d 3d 20 74 72 75 65 20 |(list)) |== true |
|00001dc0| 7c 7c 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |||. | |
|00001dd0| 20 20 20 28 6c 69 73 74 | 70 28 63 61 73 65 73 29 | (list|p(cases)|
|00001de0| 20 26 26 20 6b 65 79 70 | 72 65 73 65 6e 74 28 6b | && keyp|resent(k|
|00001df0| 65 79 2c 63 61 73 65 73 | 29 29 20 7c 7c 0d 20 20 |ey,cases|)) ||. |
|00001e00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 65 71 | | eq|
|00001e10| 6c 28 6b 65 79 2c 63 61 | 73 65 73 29 29 20 7b 0d |l(key,ca|ses)) {.|
|00001e20| 0d 09 09 2f 2a 20 65 76 | 61 6c 75 61 74 65 20 65 |.../* ev|aluate e|
|00001e30| 61 63 68 20 65 78 70 72 | 65 73 73 69 6f 6e 20 2a |ach expr|ession *|
|00001e40| 2f 0d 09 09 66 6f 72 20 | 28 6c 69 73 74 20 3d 20 |/...for |(list = |
|00001e50| 63 64 72 28 6c 69 73 74 | 29 3b 20 63 6f 6e 73 70 |cdr(list|); consp|
|00001e60| 28 6c 69 73 74 29 3b 20 | 6c 69 73 74 20 3d 20 63 |(list); |list = c|
|00001e70| 64 72 28 6c 69 73 74 29 | 29 0d 09 09 20 20 20 20 |dr(list)|)... |
|00001e80| 76 61 6c 20 3d 20 78 6c | 65 76 61 6c 28 63 61 72 |val = xl|eval(car|
|00001e90| 28 6c 69 73 74 29 29 3b | 0d 0d 09 09 2f 2a 20 65 |(list));|..../* e|
|00001ea0| 78 69 74 20 74 68 65 20 | 6c 6f 6f 70 20 2a 2f 0d |xit the |loop */.|
|00001eb0| 09 09 62 72 65 61 6b 3b | 0d 09 20 20 20 20 7d 0d |..break;|.. }.|
|00001ec0| 09 7d 0d 09 65 6c 73 65 | 0d 09 20 20 20 20 78 6c |.}..else|.. xl|
|00001ed0| 65 72 72 6f 72 28 22 62 | 61 64 20 63 61 73 65 20 |error("b|ad case |
|00001ee0| 63 6c 61 75 73 65 22 2c | 6c 69 73 74 29 3b 0d 20 |clause",|list);. |
|00001ef0| 20 20 20 7d 0d 0d 20 20 | 20 20 2f 2a 20 72 65 73 | }.. | /* res|
|00001f00| 74 6f 72 65 20 74 68 65 | 20 70 72 65 76 69 6f 75 |tore the| previou|
|00001f10| 73 20 73 74 61 63 6b 20 | 66 72 61 6d 65 20 2a 2f |s stack |frame */|
|00001f20| 0d 20 20 20 20 78 6c 73 | 74 61 63 6b 20 3d 20 6f |. xls|tack = o|
|00001f30| 6c 64 73 74 6b 3b 0d 0d | 20 20 20 20 2f 2a 20 72 |ldstk;..| /* r|
|00001f40| 65 74 75 72 6e 20 74 68 | 65 20 76 61 6c 75 65 20 |eturn th|e value |
|00001f50| 2a 2f 0d 20 20 20 20 72 | 65 74 75 72 6e 20 28 76 |*/. r|eturn (v|
|00001f60| 61 6c 29 3b 0d 7d 0d 0d | 2f 2a 20 6b 65 79 70 72 |al);.}..|/* keypr|
|00001f70| 65 73 65 6e 74 20 2d 20 | 63 68 65 63 6b 20 66 6f |esent - |check fo|
|00001f80| 72 20 74 68 65 20 70 72 | 65 73 65 6e 63 65 20 6f |r the pr|esence o|
|00001f90| 66 20 61 20 6b 65 79 20 | 69 6e 20 61 20 6c 69 73 |f a key |in a lis|
|00001fa0| 74 20 2a 2f 0d 4c 4f 43 | 41 4c 20 69 6e 74 20 6b |t */.LOC|AL int k|
|00001fb0| 65 79 70 72 65 73 65 6e | 74 28 6b 65 79 2c 6c 69 |eypresen|t(key,li|
|00001fc0| 73 74 29 0d 20 20 4e 4f | 44 45 20 2a 6b 65 79 2c |st). NO|DE *key,|
|00001fd0| 2a 6c 69 73 74 3b 0d 7b | 0d 20 20 20 20 66 6f 72 |*list;.{|. for|
|00001fe0| 20 28 3b 20 63 6f 6e 73 | 70 28 6c 69 73 74 29 3b | (; cons|p(list);|
|00001ff0| 20 6c 69 73 74 20 3d 20 | 63 64 72 28 6c 69 73 74 | list = |cdr(list|
|00002000| 29 29 0d 09 69 66 20 28 | 65 71 6c 28 63 61 72 28 |))..if (|eql(car(|
|00002010| 6c 69 73 74 29 2c 6b 65 | 79 29 29 0d 09 20 20 20 |list),ke|y)).. |
|00002020| 20 72 65 74 75 72 6e 20 | 28 54 52 55 45 29 3b 0d | return |(TRUE);.|
|00002030| 20 20 20 20 72 65 74 75 | 72 6e 20 28 46 41 4c 53 | retu|rn (FALS|
|00002040| 45 29 3b 0d 7d 0d 0d 2f | 2a 20 78 61 6e 64 20 2d |E);.}../|* xand -|
|00002050| 20 73 70 65 63 69 61 6c | 20 66 6f 72 6d 20 27 61 | special| form 'a|
|00002060| 6e 64 27 20 2a 2f 0d 4e | 4f 44 45 20 2a 78 61 6e |nd' */.N|ODE *xan|
|00002070| 64 28 61 72 67 73 29 0d | 20 20 4e 4f 44 45 20 2a |d(args).| NODE *|
|00002080| 61 72 67 73 3b 0d 7b 0d | 20 20 20 20 4e 4f 44 45 |args;.{.| NODE|
|00002090| 20 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 65 | *val;..| /* e|
|000020a0| 76 61 6c 75 61 74 65 20 | 65 61 63 68 20 61 72 67 |valuate |each arg|
|000020b0| 75 6d 65 6e 74 20 2a 2f | 0d 20 20 20 20 66 6f 72 |ument */|. for|
|000020c0| 20 28 76 61 6c 20 3d 20 | 74 72 75 65 3b 20 63 6f | (val = |true; co|
|000020d0| 6e 73 70 28 61 72 67 73 | 29 3b 20 61 72 67 73 20 |nsp(args|); args |
|000020e0| 3d 20 63 64 72 28 61 72 | 67 73 29 29 0d 09 69 66 |= cdr(ar|gs))..if|
|000020f0| 20 28 28 76 61 6c 20 3d | 20 78 6c 65 76 61 6c 28 | ((val =| xleval(|
|00002100| 63 61 72 28 61 72 67 73 | 29 29 29 20 3d 3d 20 4e |car(args|))) == N|
|00002110| 49 4c 29 0d 09 20 20 20 | 20 62 72 65 61 6b 3b 0d |IL).. | break;.|
|00002120| 0d 20 20 20 20 2f 2a 20 | 72 65 74 75 72 6e 20 74 |. /* |return t|
|00002130| 68 65 20 72 65 73 75 6c | 74 20 76 61 6c 75 65 20 |he resul|t value |
|00002140| 2a 2f 0d 20 20 20 20 72 | 65 74 75 72 6e 20 28 76 |*/. r|eturn (v|
|00002150| 61 6c 29 3b 0d 7d 0d 0d | 2f 2a 20 78 6f 72 20 2d |al);.}..|/* xor -|
|00002160| 20 73 70 65 63 69 61 6c | 20 66 6f 72 6d 20 27 6f | special| form 'o|
|00002170| 72 27 20 2a 2f 0d 4e 4f | 44 45 20 2a 78 6f 72 28 |r' */.NO|DE *xor(|
|00002180| 61 72 67 73 29 0d 20 20 | 4e 4f 44 45 20 2a 61 72 |args). |NODE *ar|
|00002190| 67 73 3b 0d 7b 0d 20 20 | 20 20 4e 4f 44 45 20 2a |gs;.{. | NODE *|
|000021a0| 76 61 6c 3b 0d 0d 20 20 | 20 20 2f 2a 20 65 76 61 |val;.. | /* eva|
|000021b0| 6c 75 61 74 65 20 65 61 | 63 68 20 61 72 67 75 6d |luate ea|ch argum|
|000021c0| 65 6e 74 20 2a 2f 0d 20 | 20 20 20 66 6f 72 20 28 |ent */. | for (|
|000021d0| 76 61 6c 20 3d 20 4e 49 | 4c 3b 20 63 6f 6e 73 70 |val = NI|L; consp|
|000021e0| 28 61 72 67 73 29 3b 20 | 61 72 67 73 20 3d 20 63 |(args); |args = c|
|000021f0| 64 72 28 61 72 67 73 29 | 29 0d 09 69 66 20 28 28 |dr(args)|)..if ((|
|00002200| 76 61 6c 20 3d 20 78 6c | 65 76 61 6c 28 63 61 72 |val = xl|eval(car|
|00002210| 28 61 72 67 73 29 29 29 | 29 0d 09 20 20 20 20 62 |(args)))|).. b|
|00002220| 72 65 61 6b 3b 0d 0d 20 | 20 20 20 2f 2a 20 72 65 |reak;.. | /* re|
|00002230| 74 75 72 6e 20 74 68 65 | 20 72 65 73 75 6c 74 20 |turn the| result |
|00002240| 76 61 6c 75 65 20 2a 2f | 0d 20 20 20 20 72 65 74 |value */|. ret|
|00002250| 75 72 6e 20 28 76 61 6c | 29 3b 0d 7d 0d 0d 2f 2a |urn (val|);.}../*|
|00002260| 20 78 69 66 20 2d 20 73 | 70 65 63 69 61 6c 20 66 | xif - s|pecial f|
|00002270| 6f 72 6d 20 27 69 66 27 | 20 2a 2f 0d 4e 4f 44 45 |orm 'if'| */.NODE|
|00002280| 20 2a 78 69 66 28 61 72 | 67 73 29 0d 20 20 4e 4f | *xif(ar|gs). NO|
|00002290| 44 45 20 2a 61 72 67 73 | 3b 0d 7b 0d 20 20 20 20 |DE *args|;.{. |
|000022a0| 4e 4f 44 45 20 2a 74 65 | 73 74 65 78 70 72 2c 2a |NODE *te|stexpr,*|
|000022b0| 74 68 65 6e 65 78 70 72 | 2c 2a 65 6c 73 65 65 78 |thenexpr|,*elseex|
|000022c0| 70 72 3b 0d 0d 20 20 20 | 20 2f 2a 20 67 65 74 20 |pr;.. | /* get |
|000022d0| 74 68 65 20 74 65 73 74 | 20 65 78 70 72 65 73 73 |the test| express|
|000022e0| 69 6f 6e 2c 20 74 68 65 | 6e 20 63 6c 61 75 73 65 |ion, the|n clause|
|000022f0| 20 61 6e 64 20 65 6c 73 | 65 20 63 6c 61 75 73 65 | and els|e clause|
|00002300| 20 2a 2f 0d 20 20 20 20 | 74 65 73 74 65 78 70 72 | */. |testexpr|
|00002310| 20 3d 20 78 6c 61 72 67 | 28 26 61 72 67 73 29 3b | = xlarg|(&args);|
|00002320| 0d 20 20 20 20 74 68 65 | 6e 65 78 70 72 20 3d 20 |. the|nexpr = |
|00002330| 78 6c 61 72 67 28 26 61 | 72 67 73 29 3b 0d 20 20 |xlarg(&a|rgs);. |
|00002340| 20 20 65 6c 73 65 65 78 | 70 72 20 3d 20 28 61 72 | elseex|pr = (ar|
|00002350| 67 73 20 3f 20 78 6c 61 | 72 67 28 26 61 72 67 73 |gs ? xla|rg(&args|
|00002360| 29 20 3a 20 4e 49 4c 29 | 3b 0d 20 20 20 20 78 6c |) : NIL)|;. xl|
|00002370| 6c 61 73 74 61 72 67 28 | 61 72 67 73 29 3b 0d 0d |lastarg(|args);..|
|00002380| 20 20 20 20 2f 2a 20 65 | 76 61 6c 75 61 74 65 20 | /* e|valuate |
|00002390| 74 68 65 20 61 70 70 72 | 6f 70 72 69 61 74 65 20 |the appr|opriate |
|000023a0| 63 6c 61 75 73 65 20 2a | 2f 0d 20 20 20 20 72 65 |clause *|/. re|
|000023b0| 74 75 72 6e 20 28 78 6c | 65 76 61 6c 28 78 6c 65 |turn (xl|eval(xle|
|000023c0| 76 61 6c 28 74 65 73 74 | 65 78 70 72 29 20 3f 20 |val(test|expr) ? |
|000023d0| 74 68 65 6e 65 78 70 72 | 20 3a 20 65 6c 73 65 65 |thenexpr| : elsee|
|000023e0| 78 70 72 29 29 3b 0d 7d | 0d 0d 2f 2a 20 78 6c 65 |xpr));.}|../* xle|
|000023f0| 74 20 2d 20 73 70 65 63 | 69 61 6c 20 66 6f 72 6d |t - spec|ial form|
|00002400| 20 27 6c 65 74 27 20 2a | 2f 0d 4e 4f 44 45 20 2a | 'let' *|/.NODE *|
|00002410| 78 6c 65 74 28 61 72 67 | 73 29 0d 20 20 4e 4f 44 |xlet(arg|s). NOD|
|00002420| 45 20 2a 61 72 67 73 3b | 0d 7b 0d 20 20 20 20 72 |E *args;|.{. r|
|00002430| 65 74 75 72 6e 20 28 6c | 65 74 28 61 72 67 73 2c |eturn (l|et(args,|
|00002440| 54 52 55 45 29 29 3b 0d | 7d 0d 0d 2f 2a 20 78 6c |TRUE));.|}../* xl|
|00002450| 65 74 73 74 61 72 20 2d | 20 73 70 65 63 69 61 6c |etstar -| special|
|00002460| 20 66 6f 72 6d 20 27 6c | 65 74 2a 27 20 2a 2f 0d | form 'l|et*' */.|
|00002470| 4e 4f 44 45 20 2a 78 6c | 65 74 73 74 61 72 28 61 |NODE *xl|etstar(a|
|00002480| 72 67 73 29 0d 20 20 4e | 4f 44 45 20 2a 61 72 67 |rgs). N|ODE *arg|
|00002490| 73 3b 0d 7b 0d 20 20 20 | 20 72 65 74 75 72 6e 20 |s;.{. | return |
|000024a0| 28 6c 65 74 28 61 72 67 | 73 2c 46 41 4c 53 45 29 |(let(arg|s,FALSE)|
|000024b0| 29 3b 0d 7d 0d 0d 2f 2a | 20 6c 65 74 20 2d 20 63 |);.}../*| let - c|
|000024c0| 6f 6d 6d 6f 6e 20 6c 65 | 74 20 72 6f 75 74 69 6e |ommon le|t routin|
|000024d0| 65 20 2a 2f 0d 4c 4f 43 | 41 4c 20 4e 4f 44 45 20 |e */.LOC|AL NODE |
|000024e0| 2a 6c 65 74 28 61 72 67 | 73 2c 70 66 6c 61 67 29 |*let(arg|s,pflag)|
|000024f0| 0d 20 20 4e 4f 44 45 20 | 2a 61 72 67 73 3b 20 69 |. NODE |*args; i|
|00002500| 6e 74 20 70 66 6c 61 67 | 3b 0d 7b 0d 20 20 20 20 |nt pflag|;.{. |
|00002510| 4e 4f 44 45 20 2a 2a 2a | 6f 6c 64 73 74 6b 2c 2a |NODE ***|oldstk,*|
|00002520| 6e 65 77 65 6e 76 2c 2a | 76 61 6c 3b 0d 0d 20 20 |newenv,*|val;.. |
|00002530| 20 20 2f 2a 20 63 72 65 | 61 74 65 20 61 20 6e 65 | /* cre|ate a ne|
|00002540| 77 20 73 74 61 63 6b 20 | 66 72 61 6d 65 20 2a 2f |w stack |frame */|
|00002550| 0d 20 20 20 20 6f 6c 64 | 73 74 6b 20 3d 20 78 6c |. old|stk = xl|
|00002560| 73 74 61 63 6b 3b 0d 20 | 20 20 20 78 6c 73 61 76 |stack;. | xlsav|
|00002570| 65 31 28 6e 65 77 65 6e | 76 29 3b 0d 0d 20 20 20 |e1(newen|v);.. |
|00002580| 20 2f 2a 20 63 72 65 61 | 74 65 20 61 20 6e 65 77 | /* crea|te a new|
|00002590| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 20 66 72 61 | environ|ment fra|
|000025a0| 6d 65 20 2a 2f 0d 20 20 | 20 20 6e 65 77 65 6e 76 |me */. | newenv|
|000025b0| 20 3d 20 78 6c 66 72 61 | 6d 65 28 78 6c 65 6e 76 | = xlfra|me(xlenv|
|000025c0| 29 3b 0d 0d 20 20 20 20 | 2f 2a 20 67 65 74 20 74 |);.. |/* get t|
|000025d0| 68 65 20 6c 69 73 74 20 | 6f 66 20 62 69 6e 64 69 |he list |of bindi|
|000025e0| 6e 67 73 20 61 6e 64 20 | 62 69 6e 64 20 74 68 65 |ngs and |bind the|
|000025f0| 20 73 79 6d 62 6f 6c 73 | 20 2a 2f 0d 20 20 20 20 | symbols| */. |
|00002600| 69 66 20 28 21 70 66 6c | 61 67 29 20 78 6c 65 6e |if (!pfl|ag) xlen|
|00002610| 76 20 3d 20 6e 65 77 65 | 6e 76 3b 0d 20 20 20 20 |v = newe|nv;. |
|00002620| 64 6f 62 69 6e 64 69 6e | 67 73 28 78 6c 6d 61 74 |dobindin|gs(xlmat|
|00002630| 63 68 28 4c 49 53 54 2c | 26 61 72 67 73 29 2c 6e |ch(LIST,|&args),n|
|00002640| 65 77 65 6e 76 29 3b 0d | 20 20 20 20 69 66 20 28 |ewenv);.| if (|
|00002650| 70 66 6c 61 67 29 20 78 | 6c 65 6e 76 20 3d 20 6e |pflag) x|lenv = n|
|00002660| 65 77 65 6e 76 3b 0d 0d | 20 20 20 20 2f 2a 20 65 |ewenv;..| /* e|
|00002670| 78 65 63 75 74 65 20 74 | 68 65 20 63 6f 64 65 20 |xecute t|he code |
|00002680| 2a 2f 0d 20 20 20 20 66 | 6f 72 20 28 76 61 6c 20 |*/. f|or (val |
|00002690| 3d 20 4e 49 4c 3b 20 63 | 6f 6e 73 70 28 61 72 67 |= NIL; c|onsp(arg|
|000026a0| 73 29 3b 20 61 72 67 73 | 20 3d 20 63 64 72 28 61 |s); args| = cdr(a|
|000026b0| 72 67 73 29 29 0d 09 76 | 61 6c 20 3d 20 78 6c 65 |rgs))..v|al = xle|
|000026c0| 76 61 6c 28 63 61 72 28 | 61 72 67 73 29 29 3b 0d |val(car(|args));.|
|000026d0| 0d 20 20 20 20 2f 2a 20 | 75 6e 62 69 6e 64 20 74 |. /* |unbind t|
|000026e0| 68 65 20 61 72 67 75 6d | 65 6e 74 73 20 2a 2f 0d |he argum|ents */.|
|000026f0| 20 20 20 20 78 6c 65 6e | 76 20 3d 20 63 64 72 28 | xlen|v = cdr(|
|00002700| 78 6c 65 6e 76 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |xlenv);.|. /* |
|00002710| 72 65 73 74 6f 72 65 20 | 74 68 65 20 70 72 65 76 |restore |the prev|
|00002720| 69 6f 75 73 20 73 74 61 | 63 6b 20 66 72 61 6d 65 |ious sta|ck frame|
|00002730| 20 2a 2f 0d 20 20 20 20 | 78 6c 73 74 61 63 6b 20 | */. |xlstack |
|00002740| 3d 20 6f 6c 64 73 74 6b | 3b 0d 0d 20 20 20 20 2f |= oldstk|;.. /|
|00002750| 2a 20 72 65 74 75 72 6e | 20 74 68 65 20 72 65 73 |* return| the res|
|00002760| 75 6c 74 20 2a 2f 0d 20 | 20 20 20 72 65 74 75 72 |ult */. | retur|
|00002770| 6e 20 28 76 61 6c 29 3b | 0d 7d 0d 0d 2f 2a 20 78 |n (val);|.}../* x|
|00002780| 70 72 6f 67 20 2d 20 73 | 70 65 63 69 61 6c 20 66 |prog - s|pecial f|
|00002790| 6f 72 6d 20 27 70 72 6f | 67 27 20 2a 2f 0d 4e 4f |orm 'pro|g' */.NO|
|000027a0| 44 45 20 2a 78 70 72 6f | 67 28 61 72 67 73 29 0d |DE *xpro|g(args).|
|000027b0| 20 20 4e 4f 44 45 20 2a | 61 72 67 73 3b 0d 7b 0d | NODE *|args;.{.|
|000027c0| 20 20 20 20 72 65 74 75 | 72 6e 20 28 70 72 6f 67 | retu|rn (prog|
|000027d0| 28 61 72 67 73 2c 54 52 | 55 45 29 29 3b 0d 7d 0d |(args,TR|UE));.}.|
|000027e0| 0d 2f 2a 20 78 70 72 6f | 67 73 74 61 72 20 2d 20 |./* xpro|gstar - |
|000027f0| 73 70 65 63 69 61 6c 20 | 66 6f 72 6d 20 27 70 72 |special |form 'pr|
|00002800| 6f 67 2a 27 20 2a 2f 0d | 4e 4f 44 45 20 2a 78 70 |og*' */.|NODE *xp|
|00002810| 72 6f 67 73 74 61 72 28 | 61 72 67 73 29 0d 20 20 |rogstar(|args). |
|00002820| 4e 4f 44 45 20 2a 61 72 | 67 73 3b 0d 7b 0d 20 20 |NODE *ar|gs;.{. |
|00002830| 20 20 72 65 74 75 72 6e | 20 28 70 72 6f 67 28 61 | return| (prog(a|
|00002840| 72 67 73 2c 46 41 4c 53 | 45 29 29 3b 0d 7d 0d 0d |rgs,FALS|E));.}..|
|00002850| 2f 2a 20 70 72 6f 67 20 | 2d 20 63 6f 6d 6d 6f 6e |/* prog |- common|
|00002860| 20 70 72 6f 67 20 72 6f | 75 74 69 6e 65 20 2a 2f | prog ro|utine */|
|00002870| 0d 4c 4f 43 41 4c 20 4e | 4f 44 45 20 2a 70 72 6f |.LOCAL N|ODE *pro|
|00002880| 67 28 61 72 67 73 2c 70 | 66 6c 61 67 29 0d 20 20 |g(args,p|flag). |
|00002890| 4e 4f 44 45 20 2a 61 72 | 67 73 3b 20 69 6e 74 20 |NODE *ar|gs; int |
|000028a0| 70 66 6c 61 67 3b 0d 7b | 0d 20 20 20 20 4e 4f 44 |pflag;.{|. NOD|
|000028b0| 45 20 2a 2a 2a 6f 6c 64 | 73 74 6b 2c 2a 6e 65 77 |E ***old|stk,*new|
|000028c0| 65 6e 76 2c 2a 76 61 6c | 3b 0d 0d 20 20 20 20 2f |env,*val|;.. /|
|000028d0| 2a 20 63 72 65 61 74 65 | 20 61 20 6e 65 77 20 73 |* create| a new s|
|000028e0| 74 61 63 6b 20 66 72 61 | 6d 65 20 2a 2f 0d 20 20 |tack fra|me */. |
|000028f0| 20 20 6f 6c 64 73 74 6b | 20 3d 20 78 6c 73 74 61 | oldstk| = xlsta|
|00002900| 63 6b 3b 0d 20 20 20 20 | 78 6c 73 61 76 65 31 28 |ck;. |xlsave1(|
|00002910| 6e 65 77 65 6e 76 29 3b | 0d 0d 20 20 20 20 2f 2a |newenv);|.. /*|
|00002920| 20 63 72 65 61 74 65 20 | 61 20 6e 65 77 20 65 6e | create |a new en|
|00002930| 76 69 72 6f 6e 6d 65 6e | 74 20 66 72 61 6d 65 20 |vironmen|t frame |
|00002940| 2a 2f 0d 20 20 20 20 6e | 65 77 65 6e 76 20 3d 20 |*/. n|ewenv = |
|00002950| 78 6c 66 72 61 6d 65 28 | 78 6c 65 6e 76 29 3b 0d |xlframe(|xlenv);.|
|00002960| 0d 20 20 20 20 2f 2a 20 | 67 65 74 20 74 68 65 20 |. /* |get the |
|00002970| 6c 69 73 74 20 6f 66 20 | 62 69 6e 64 69 6e 67 73 |list of |bindings|
|00002980| 20 61 6e 64 20 62 69 6e | 64 20 74 68 65 20 73 79 | and bin|d the sy|
|00002990| 6d 62 6f 6c 73 20 2a 2f | 0d 20 20 20 20 69 66 20 |mbols */|. if |
|000029a0| 28 21 70 66 6c 61 67 29 | 20 78 6c 65 6e 76 20 3d |(!pflag)| xlenv =|
|000029b0| 20 6e 65 77 65 6e 76 3b | 0d 20 20 20 20 64 6f 62 | newenv;|. dob|
|000029c0| 69 6e 64 69 6e 67 73 28 | 78 6c 6d 61 74 63 68 28 |indings(|xlmatch(|
|000029d0| 4c 49 53 54 2c 26 61 72 | 67 73 29 2c 6e 65 77 65 |LIST,&ar|gs),newe|
|000029e0| 6e 76 29 3b 0d 20 20 20 | 20 69 66 20 28 70 66 6c |nv);. | if (pfl|
|000029f0| 61 67 29 20 78 6c 65 6e | 76 20 3d 20 6e 65 77 65 |ag) xlen|v = newe|
|00002a00| 6e 76 3b 0d 0d 20 20 20 | 20 2f 2a 20 65 78 65 63 |nv;.. | /* exec|
|00002a10| 75 74 65 20 74 68 65 20 | 63 6f 64 65 20 2a 2f 0d |ute the |code */.|
|00002a20| 20 20 20 20 74 61 67 62 | 6c 6f 63 6b 28 61 72 67 | tagb|lock(arg|
|00002a30| 73 2c 26 76 61 6c 29 3b | 0d 0d 20 20 20 20 2f 2a |s,&val);|.. /*|
|00002a40| 20 75 6e 62 69 6e 64 20 | 74 68 65 20 61 72 67 75 | unbind |the argu|
|00002a50| 6d 65 6e 74 73 20 2a 2f | 0d 20 20 20 20 78 6c 65 |ments */|. xle|
|00002a60| 6e 76 20 3d 20 63 64 72 | 28 78 6c 65 6e 76 29 3b |nv = cdr|(xlenv);|
|00002a70| 0d 0d 20 20 20 20 2f 2a | 20 72 65 73 74 6f 72 65 |.. /*| restore|
|00002a80| 20 74 68 65 20 70 72 65 | 76 69 6f 75 73 20 73 74 | the pre|vious st|
|00002a90| 61 63 6b 20 66 72 61 6d | 65 20 2a 2f 0d 20 20 20 |ack fram|e */. |
|00002aa0| 20 78 6c 73 74 61 63 6b | 20 3d 20 6f 6c 64 73 74 | xlstack| = oldst|
|00002ab0| 6b 3b 0d 0d 20 20 20 20 | 2f 2a 20 72 65 74 75 72 |k;.. |/* retur|
|00002ac0| 6e 20 74 68 65 20 72 65 | 73 75 6c 74 20 2a 2f 0d |n the re|sult */.|
|00002ad0| 20 20 20 20 72 65 74 75 | 72 6e 20 28 76 61 6c 29 | retu|rn (val)|
|00002ae0| 3b 0d 7d 0d 0d 2f 2a 20 | 78 67 6f 20 2d 20 73 70 |;.}../* |xgo - sp|
|00002af0| 65 63 69 61 6c 20 66 6f | 72 6d 20 27 67 6f 27 20 |ecial fo|rm 'go' |
|00002b00| 2a 2f 0d 4e 4f 44 45 20 | 2a 78 67 6f 28 61 72 67 |*/.NODE |*xgo(arg|
|00002b10| 73 29 0d 20 20 4e 4f 44 | 45 20 2a 61 72 67 73 3b |s). NOD|E *args;|
|00002b20| 0d 7b 0d 20 20 20 20 4e | 4f 44 45 20 2a 6c 61 62 |.{. N|ODE *lab|
|00002b30| 65 6c 3b 0d 0d 20 20 20 | 20 2f 2a 20 67 65 74 20 |el;.. | /* get |
|00002b40| 74 68 65 20 74 61 72 67 | 65 74 20 6c 61 62 65 6c |the targ|et label|
|00002b50| 20 2a 2f 0d 20 20 20 20 | 6c 61 62 65 6c 20 3d 20 | */. |label = |
|00002b60| 78 6c 61 72 67 28 26 61 | 72 67 73 29 3b 0d 20 20 |xlarg(&a|rgs);. |
|00002b70| 20 20 78 6c 6c 61 73 74 | 61 72 67 28 61 72 67 73 | xllast|arg(args|
|00002b80| 29 3b 0d 0d 20 20 20 20 | 2f 2a 20 74 72 61 6e 73 |);.. |/* trans|
|00002b90| 66 65 72 20 74 6f 20 74 | 68 65 20 6c 61 62 65 6c |fer to t|he label|
|00002ba0| 20 2a 2f 0d 20 20 20 20 | 78 6c 67 6f 28 6c 61 62 | */. |xlgo(lab|
|00002bb0| 65 6c 29 3b 0d 7d 0d 0d | 2f 2a 20 78 72 65 74 75 |el);.}..|/* xretu|
|00002bc0| 72 6e 20 2d 20 73 70 65 | 63 69 61 6c 20 66 6f 72 |rn - spe|cial for|
|00002bd0| 6d 20 27 72 65 74 75 72 | 6e 27 20 2a 2f 0d 4e 4f |m 'retur|n' */.NO|
|00002be0| 44 45 20 2a 78 72 65 74 | 75 72 6e 28 61 72 67 73 |DE *xret|urn(args|
|00002bf0| 29 0d 20 20 4e 4f 44 45 | 20 2a 61 72 67 73 3b 0d |). NODE| *args;.|
|00002c00| 7b 0d 20 20 20 20 4e 4f | 44 45 20 2a 76 61 6c 3b |{. NO|DE *val;|
|00002c10| 0d 0d 20 20 20 20 2f 2a | 20 67 65 74 20 74 68 65 |.. /*| get the|
|00002c20| 20 72 65 74 75 72 6e 20 | 76 61 6c 75 65 20 2a 2f | return |value */|
|00002c30| 0d 20 20 20 20 76 61 6c | 20 3d 20 28 61 72 67 73 |. val| = (args|
|00002c40| 20 3f 20 78 6c 65 76 61 | 72 67 28 26 61 72 67 73 | ? xleva|rg(&args|
|00002c50| 29 20 3a 20 4e 49 4c 29 | 3b 0d 20 20 20 20 78 6c |) : NIL)|;. xl|
|00002c60| 6c 61 73 74 61 72 67 28 | 61 72 67 73 29 3b 0d 0d |lastarg(|args);..|
|00002c70| 20 20 20 20 2f 2a 20 72 | 65 74 75 72 6e 20 66 72 | /* r|eturn fr|
|00002c80| 6f 6d 20 74 68 65 20 69 | 6e 6e 65 72 20 6d 6f 73 |om the i|nner mos|
|00002c90| 74 20 62 6c 6f 63 6b 20 | 2a 2f 0d 20 20 20 20 78 |t block |*/. x|
|00002ca0| 6c 72 65 74 75 72 6e 28 | 76 61 6c 29 3b 0d 7d 0d |lreturn(|val);.}.|
|00002cb0| 0d 2f 2a 20 78 70 72 6f | 67 31 20 2d 20 73 70 65 |./* xpro|g1 - spe|
|00002cc0| 63 69 61 6c 20 66 6f 72 | 6d 20 27 70 72 6f 67 31 |cial for|m 'prog1|
|00002cd0| 27 20 2a 2f 0d 4e 4f 44 | 45 20 2a 78 70 72 6f 67 |' */.NOD|E *xprog|
|00002ce0| 31 28 61 72 67 73 29 0d | 20 20 4e 4f 44 45 20 2a |1(args).| NODE *|
|00002cf0| 61 72 67 73 3b 0d 7b 0d | 20 20 20 20 72 65 74 75 |args;.{.| retu|
|00002d00| 72 6e 20 28 70 72 6f 67 | 78 28 61 72 67 73 2c 31 |rn (prog|x(args,1|
|00002d10| 29 29 3b 0d 7d 0d 0d 2f | 2a 20 78 70 72 6f 67 32 |));.}../|* xprog2|
|00002d20| 20 2d 20 73 70 65 63 69 | 61 6c 20 66 6f 72 6d 20 | - speci|al form |
|00002d30| 27 70 72 6f 67 32 27 20 | 2a 2f 0d 4e 4f 44 45 20 |'prog2' |*/.NODE |
|00002d40| 2a 78 70 72 6f 67 32 28 | 61 72 67 73 29 0d 20 20 |*xprog2(|args). |
|00002d50| 4e 4f 44 45 20 2a 61 72 | 67 73 3b 0d 7b 0d 20 20 |NODE *ar|gs;.{. |
|00002d60| 20 20 72 65 74 75 72 6e | 20 28 70 72 6f 67 78 28 | return| (progx(|
|00002d70| 61 72 67 73 2c 32 29 29 | 3b 0d 7d 0d 0d 2f 2a 20 |args,2))|;.}../* |
|00002d80| 70 72 6f 67 78 20 2d 20 | 63 6f 6d 6d 6f 6e 20 70 |progx - |common p|
|00002d90| 72 6f 67 78 20 63 6f 64 | 65 20 2a 2f 0d 4c 4f 43 |rogx cod|e */.LOC|
|00002da0| 41 4c 20 4e 4f 44 45 20 | 2a 70 72 6f 67 78 28 61 |AL NODE |*progx(a|
|00002db0| 72 67 73 2c 6e 29 0d 20 | 20 4e 4f 44 45 20 2a 61 |rgs,n). | NODE *a|
|00002dc0| 72 67 73 3b 20 69 6e 74 | 20 6e 3b 0d 7b 0d 20 20 |rgs; int| n;.{. |
|00002dd0| 20 20 4e 4f 44 45 20 2a | 2a 2a 6f 6c 64 73 74 6b | NODE *|**oldstk|
|00002de0| 2c 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 63 |,*val;..| /* c|
|00002df0| 72 65 61 74 65 20 61 20 | 6e 65 77 20 73 74 61 63 |reate a |new stac|
|00002e00| 6b 20 66 72 61 6d 65 20 | 2a 2f 0d 20 20 20 20 6f |k frame |*/. o|
|00002e10| 6c 64 73 74 6b 20 3d 20 | 78 6c 73 74 61 63 6b 3b |ldstk = |xlstack;|
|00002e20| 0d 20 20 20 20 78 6c 73 | 61 76 65 31 28 76 61 6c |. xls|ave1(val|
|00002e30| 29 3b 0d 0d 20 20 20 20 | 2f 2a 20 65 76 61 6c 75 |);.. |/* evalu|
|00002e40| 61 74 65 20 74 68 65 20 | 66 69 72 73 74 20 6e 20 |ate the |first n |
|00002e50| 65 78 70 72 65 73 73 69 | 6f 6e 73 20 2a 2f 0d 20 |expressi|ons */. |
|00002e60| 20 20 20 66 6f 72 20 28 | 3b 20 63 6f 6e 73 70 28 | for (|; consp(|
|00002e70| 61 72 67 73 29 20 26 26 | 20 2d 2d 6e 20 3e 3d 20 |args) &&| --n >= |
|00002e80| 30 3b 20 61 72 67 73 20 | 3d 20 63 64 72 28 61 72 |0; args |= cdr(ar|
|00002e90| 67 73 29 29 0d 09 76 61 | 6c 20 3d 20 78 6c 65 76 |gs))..va|l = xlev|
|00002ea0| 61 6c 28 63 61 72 28 61 | 72 67 73 29 29 3b 0d 0d |al(car(a|rgs));..|
|00002eb0| 20 20 20 20 2f 2a 20 65 | 76 61 6c 75 61 74 65 20 | /* e|valuate |
|00002ec0| 65 61 63 68 20 72 65 6d | 61 69 6e 69 6e 67 20 61 |each rem|aining a|
|00002ed0| 72 67 75 6d 65 6e 74 20 | 2a 2f 0d 20 20 20 20 66 |rgument |*/. f|
|00002ee0| 6f 72 20 28 3b 20 63 6f | 6e 73 70 28 61 72 67 73 |or (; co|nsp(args|
|00002ef0| 29 3b 20 61 72 67 73 20 | 3d 20 63 64 72 28 61 72 |); args |= cdr(ar|
|00002f00| 67 73 29 29 0d 09 78 6c | 65 76 61 6c 28 63 61 72 |gs))..xl|eval(car|
|00002f10| 28 61 72 67 73 29 29 3b | 0d 0d 20 20 20 20 2f 2a |(args));|.. /*|
|00002f20| 20 72 65 73 74 6f 72 65 | 20 74 68 65 20 70 72 65 | restore| the pre|
|00002f30| 76 69 6f 75 73 20 73 74 | 61 63 6b 20 66 72 61 6d |vious st|ack fram|
|00002f40| 65 20 2a 2f 0d 20 20 20 | 20 78 6c 73 74 61 63 6b |e */. | xlstack|
|00002f50| 20 3d 20 6f 6c 64 73 74 | 6b 3b 0d 0d 20 20 20 20 | = oldst|k;.. |
|00002f60| 2f 2a 20 72 65 74 75 72 | 6e 20 74 68 65 20 6c 61 |/* retur|n the la|
|00002f70| 73 74 20 74 65 73 74 20 | 65 78 70 72 65 73 73 69 |st test |expressi|
|00002f80| 6f 6e 20 76 61 6c 75 65 | 20 2a 2f 0d 20 20 20 20 |on value| */. |
|00002f90| 72 65 74 75 72 6e 20 28 | 76 61 6c 29 3b 0d 7d 0d |return (|val);.}.|
|00002fa0| 0d 2f 2a 20 78 70 72 6f | 67 6e 20 2d 20 73 70 65 |./* xpro|gn - spe|
|00002fb0| 63 69 61 6c 20 66 6f 72 | 6d 20 27 70 72 6f 67 6e |cial for|m 'progn|
|00002fc0| 27 20 2a 2f 0d 4e 4f 44 | 45 20 2a 78 70 72 6f 67 |' */.NOD|E *xprog|
|00002fd0| 6e 28 61 72 67 73 29 0d | 20 20 4e 4f 44 45 20 2a |n(args).| NODE *|
|00002fe0| 61 72 67 73 3b 0d 7b 0d | 20 20 20 20 4e 4f 44 45 |args;.{.| NODE|
|00002ff0| 20 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 65 | *val;..| /* e|
|00003000| 76 61 6c 75 61 74 65 20 | 65 61 63 68 20 65 78 70 |valuate |each exp|
|00003010| 72 65 73 73 69 6f 6e 20 | 2a 2f 0d 20 20 20 20 66 |ression |*/. f|
|00003020| 6f 72 20 28 76 61 6c 20 | 3d 20 4e 49 4c 3b 20 63 |or (val |= NIL; c|
|00003030| 6f 6e 73 70 28 61 72 67 | 73 29 3b 20 61 72 67 73 |onsp(arg|s); args|
|00003040| 20 3d 20 63 64 72 28 61 | 72 67 73 29 29 0d 09 76 | = cdr(a|rgs))..v|
|00003050| 61 6c 20 3d 20 78 6c 65 | 76 61 6c 28 63 61 72 28 |al = xle|val(car(|
|00003060| 61 72 67 73 29 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |args));.|. /* |
|00003070| 72 65 74 75 72 6e 20 74 | 68 65 20 6c 61 73 74 20 |return t|he last |
|00003080| 74 65 73 74 20 65 78 70 | 72 65 73 73 69 6f 6e 20 |test exp|ression |
|00003090| 76 61 6c 75 65 20 2a 2f | 0d 20 20 20 20 72 65 74 |value */|. ret|
|000030a0| 75 72 6e 20 28 76 61 6c | 29 3b 0d 7d 0d 0d 2f 2a |urn (val|);.}../*|
|000030b0| 20 78 64 6f 20 2d 20 73 | 70 65 63 69 61 6c 20 66 | xdo - s|pecial f|
|000030c0| 6f 72 6d 20 27 64 6f 27 | 20 2a 2f 0d 4e 4f 44 45 |orm 'do'| */.NODE|
|000030d0| 20 2a 78 64 6f 28 61 72 | 67 73 29 0d 20 20 4e 4f | *xdo(ar|gs). NO|
|000030e0| 44 45 20 2a 61 72 67 73 | 3b 0d 7b 0d 20 20 20 20 |DE *args|;.{. |
|000030f0| 72 65 74 75 72 6e 20 28 | 64 6f 6c 6f 6f 70 28 61 |return (|doloop(a|
|00003100| 72 67 73 2c 54 52 55 45 | 29 29 3b 0d 7d 0d 0d 2f |rgs,TRUE|));.}../|
|00003110| 2a 20 78 64 6f 73 74 61 | 72 20 2d 20 73 70 65 63 |* xdosta|r - spec|
|00003120| 69 61 6c 20 66 6f 72 6d | 20 27 64 6f 2a 27 20 2a |ial form| 'do*' *|
|00003130| 2f 0d 4e 4f 44 45 20 2a | 78 64 6f 73 74 61 72 28 |/.NODE *|xdostar(|
|00003140| 61 72 67 73 29 0d 20 20 | 4e 4f 44 45 20 2a 61 72 |args). |NODE *ar|
|00003150| 67 73 3b 0d 7b 0d 20 20 | 20 20 72 65 74 75 72 6e |gs;.{. | return|
|00003160| 20 28 64 6f 6c 6f 6f 70 | 28 61 72 67 73 2c 46 41 | (doloop|(args,FA|
|00003170| 4c 53 45 29 29 3b 0d 7d | 0d 0d 2f 2a 20 64 6f 6c |LSE));.}|../* dol|
|00003180| 6f 6f 70 20 2d 20 63 6f | 6d 6d 6f 6e 20 64 6f 20 |oop - co|mmon do |
|00003190| 72 6f 75 74 69 6e 65 20 | 2a 2f 0d 4c 4f 43 41 4c |routine |*/.LOCAL|
|000031a0| 20 4e 4f 44 45 20 2a 64 | 6f 6c 6f 6f 70 28 61 72 | NODE *d|oloop(ar|
|000031b0| 67 73 2c 70 66 6c 61 67 | 29 0d 20 20 4e 4f 44 45 |gs,pflag|). NODE|
|000031c0| 20 2a 61 72 67 73 3b 20 | 69 6e 74 20 70 66 6c 61 | *args; |int pfla|
|000031d0| 67 3b 0d 7b 0d 20 20 20 | 20 4e 4f 44 45 20 2a 2a |g;.{. | NODE **|
|000031e0| 2a 6f 6c 64 73 74 6b 2c | 2a 6e 65 77 65 6e 76 2c |*oldstk,|*newenv,|
|000031f0| 2a 62 6c 69 73 74 2c 2a | 63 6c 69 73 74 2c 2a 74 |*blist,*|clist,*t|
|00003200| 65 73 74 2c 2a 72 76 61 | 6c 3b 0d 20 20 20 20 69 |est,*rva|l;. i|
|00003210| 6e 74 20 72 62 72 65 61 | 6b 3b 0d 0d 20 20 20 20 |nt rbrea|k;.. |
|00003220| 2f 2a 20 63 72 65 61 74 | 65 20 61 20 6e 65 77 20 |/* creat|e a new |
|00003230| 73 74 61 63 6b 20 66 72 | 61 6d 65 20 2a 2f 0d 20 |stack fr|ame */. |
|00003240| 20 20 20 6f 6c 64 73 74 | 6b 20 3d 20 78 6c 73 74 | oldst|k = xlst|
|00003250| 61 63 6b 3b 0d 20 20 20 | 20 78 6c 73 61 76 65 31 |ack;. | xlsave1|
|00003260| 28 6e 65 77 65 6e 76 29 | 3b 0d 0d 20 20 20 20 2f |(newenv)|;.. /|
|00003270| 2a 20 67 65 74 20 74 68 | 65 20 6c 69 73 74 20 6f |* get th|e list o|
|00003280| 66 20 62 69 6e 64 69 6e | 67 73 2c 20 74 68 65 20 |f bindin|gs, the |
|00003290| 65 78 69 74 20 74 65 73 | 74 20 61 6e 64 20 74 68 |exit tes|t and th|
|000032a0| 65 20 72 65 73 75 6c 74 | 20 66 6f 72 6d 73 20 2a |e result| forms *|
|000032b0| 2f 0d 20 20 20 20 62 6c | 69 73 74 20 3d 20 78 6c |/. bl|ist = xl|
|000032c0| 6d 61 74 63 68 28 4c 49 | 53 54 2c 26 61 72 67 73 |match(LI|ST,&args|
|000032d0| 29 3b 0d 20 20 20 20 63 | 6c 69 73 74 20 3d 20 78 |);. c|list = x|
|000032e0| 6c 6d 61 74 63 68 28 4c | 49 53 54 2c 26 61 72 67 |lmatch(L|IST,&arg|
|000032f0| 73 29 3b 0d 20 20 20 20 | 74 65 73 74 20 3d 20 28 |s);. |test = (|
|00003300| 63 6f 6e 73 70 28 63 6c | 69 73 74 29 20 3f 20 63 |consp(cl|ist) ? c|
|00003310| 61 72 28 63 6c 69 73 74 | 29 20 3a 20 4e 49 4c 29 |ar(clist|) : NIL)|
|00003320| 3b 0d 0d 20 20 20 20 2f | 2a 20 63 72 65 61 74 65 |;.. /|* create|
|00003330| 20 61 20 6e 65 77 20 65 | 6e 76 69 72 6f 6e 6d 65 | a new e|nvironme|
|00003340| 6e 74 20 66 72 61 6d 65 | 20 2a 2f 0d 20 20 20 20 |nt frame| */. |
|00003350| 6e 65 77 65 6e 76 20 3d | 20 78 6c 66 72 61 6d 65 |newenv =| xlframe|
|00003360| 28 78 6c 65 6e 76 29 3b | 0d 0d 20 20 20 20 2f 2a |(xlenv);|.. /*|
|00003370| 20 62 69 6e 64 20 74 68 | 65 20 73 79 6d 62 6f 6c | bind th|e symbol|
|00003380| 73 20 2a 2f 0d 20 20 20 | 20 69 66 20 28 21 70 66 |s */. | if (!pf|
|00003390| 6c 61 67 29 20 78 6c 65 | 6e 76 20 3d 20 6e 65 77 |lag) xle|nv = new|
|000033a0| 65 6e 76 3b 0d 20 20 20 | 20 64 6f 62 69 6e 64 69 |env;. | dobindi|
|000033b0| 6e 67 73 28 62 6c 69 73 | 74 2c 6e 65 77 65 6e 76 |ngs(blis|t,newenv|
|000033c0| 29 3b 0d 20 20 20 20 69 | 66 20 28 70 66 6c 61 67 |);. i|f (pflag|
|000033d0| 29 20 78 6c 65 6e 76 20 | 3d 20 6e 65 77 65 6e 76 |) xlenv |= newenv|
|000033e0| 3b 0d 0d 20 20 20 20 2f | 2a 20 65 78 65 63 75 74 |;.. /|* execut|
|000033f0| 65 20 74 68 65 20 6c 6f | 6f 70 20 61 73 20 6c 6f |e the lo|op as lo|
|00003400| 6e 67 20 61 73 20 74 68 | 65 20 74 65 73 74 20 69 |ng as th|e test i|
|00003410| 73 20 66 61 6c 73 65 20 | 2a 2f 0d 20 20 20 20 66 |s false |*/. f|
|00003420| 6f 72 20 28 72 62 72 65 | 61 6b 20 3d 20 46 41 4c |or (rbre|ak = FAL|
|00003430| 53 45 3b 20 78 6c 65 76 | 61 6c 28 74 65 73 74 29 |SE; xlev|al(test)|
|00003440| 20 3d 3d 20 4e 49 4c 3b | 20 64 6f 75 70 64 61 74 | == NIL;| doupdat|
|00003450| 65 73 28 62 6c 69 73 74 | 2c 70 66 6c 61 67 29 29 |es(blist|,pflag))|
|00003460| 0d 09 69 66 20 28 74 61 | 67 62 6c 6f 63 6b 28 61 |..if (ta|gblock(a|
|00003470| 72 67 73 2c 26 72 76 61 | 6c 29 29 20 7b 0d 09 20 |rgs,&rva|l)) {.. |
|00003480| 20 20 20 72 62 72 65 61 | 6b 20 3d 20 54 52 55 45 | rbrea|k = TRUE|
|00003490| 3b 0d 09 20 20 20 20 62 | 72 65 61 6b 3b 0d 09 7d |;.. b|reak;..}|
|000034a0| 0d 0d 20 20 20 20 2f 2a | 20 65 76 61 6c 75 61 74 |.. /*| evaluat|
|000034b0| 65 20 74 68 65 20 72 65 | 73 75 6c 74 20 65 78 70 |e the re|sult exp|
|000034c0| 72 65 73 73 69 6f 6e 20 | 2a 2f 0d 20 20 20 20 69 |ression |*/. i|
|000034d0| 66 20 28 21 72 62 72 65 | 61 6b 20 26 26 20 63 6f |f (!rbre|ak && co|
|000034e0| 6e 73 70 28 63 6c 69 73 | 74 29 29 0d 09 66 6f 72 |nsp(clis|t))..for|
|000034f0| 20 28 72 76 61 6c 20 3d | 20 4e 49 4c 2c 20 63 6c | (rval =| NIL, cl|
|00003500| 69 73 74 20 3d 20 63 64 | 72 28 63 6c 69 73 74 29 |ist = cd|r(clist)|
|00003510| 3b 20 63 6f 6e 73 70 28 | 63 6c 69 73 74 29 3b 20 |; consp(|clist); |
|00003520| 63 6c 69 73 74 20 3d 20 | 63 64 72 28 63 6c 69 73 |clist = |cdr(clis|
|00003530| 74 29 29 0d 09 20 20 20 | 20 72 76 61 6c 20 3d 20 |t)).. | rval = |
|00003540| 78 6c 65 76 61 6c 28 63 | 61 72 28 63 6c 69 73 74 |xleval(c|ar(clist|
|00003550| 29 29 3b 0d 0d 20 20 20 | 20 2f 2a 20 75 6e 62 69 |));.. | /* unbi|
|00003560| 6e 64 20 74 68 65 20 61 | 72 67 75 6d 65 6e 74 73 |nd the a|rguments|
|00003570| 20 2a 2f 0d 20 20 20 20 | 78 6c 65 6e 76 20 3d 20 | */. |xlenv = |
|00003580| 63 64 72 28 78 6c 65 6e | 76 29 3b 0d 0d 20 20 20 |cdr(xlen|v);.. |
|00003590| 20 2f 2a 20 72 65 73 74 | 6f 72 65 20 74 68 65 20 | /* rest|ore the |
|000035a0| 70 72 65 76 69 6f 75 73 | 20 73 74 61 63 6b 20 66 |previous| stack f|
|000035b0| 72 61 6d 65 20 2a 2f 0d | 20 20 20 20 78 6c 73 74 |rame */.| xlst|
|000035c0| 61 63 6b 20 3d 20 6f 6c | 64 73 74 6b 3b 0d 0d 20 |ack = ol|dstk;.. |
|000035d0| 20 20 20 2f 2a 20 72 65 | 74 75 72 6e 20 74 68 65 | /* re|turn the|
|000035e0| 20 72 65 73 75 6c 74 20 | 2a 2f 0d 20 20 20 20 72 | result |*/. r|
|000035f0| 65 74 75 72 6e 20 28 72 | 76 61 6c 29 3b 0d 7d 0d |eturn (r|val);.}.|
|00003600| 0d 2f 2a 20 78 64 6f 6c | 69 73 74 20 2d 20 73 70 |./* xdol|ist - sp|
|00003610| 65 63 69 61 6c 20 66 6f | 72 6d 20 27 64 6f 6c 69 |ecial fo|rm 'doli|
|00003620| 73 74 27 20 2a 2f 0d 4e | 4f 44 45 20 2a 78 64 6f |st' */.N|ODE *xdo|
|00003630| 6c 69 73 74 28 61 72 67 | 73 29 0d 20 20 4e 4f 44 |list(arg|s). NOD|
|00003640| 45 20 2a 61 72 67 73 3b | 0d 7b 0d 20 20 20 20 4e |E *args;|.{. N|
|00003650| 4f 44 45 20 2a 2a 2a 6f | 6c 64 73 74 6b 2c 2a 63 |ODE ***o|ldstk,*c|
|00003660| 6c 69 73 74 2c 2a 73 79 | 6d 2c 2a 6c 69 73 74 2c |list,*sy|m,*list,|
|00003670| 2a 72 76 61 6c 3b 0d 20 | 20 20 20 69 6e 74 20 72 |*rval;. | int r|
|00003680| 62 72 65 61 6b 3b 0d 0d | 20 20 20 20 2f 2a 20 63 |break;..| /* c|
|00003690| 72 65 61 74 65 20 61 20 | 6e 65 77 20 73 74 61 63 |reate a |new stac|
|000036a0| 6b 20 66 72 61 6d 65 20 | 2a 2f 0d 20 20 20 20 6f |k frame |*/. o|
|000036b0| 6c 64 73 74 6b 20 3d 20 | 78 6c 73 74 61 63 6b 3b |ldstk = |xlstack;|
|000036c0| 0d 20 20 20 20 78 6c 73 | 61 76 65 31 28 6c 69 73 |. xls|ave1(lis|
|000036d0| 74 29 3b 0d 0d 20 20 20 | 20 2f 2a 20 67 65 74 20 |t);.. | /* get |
|000036e0| 74 68 65 20 63 6f 6e 74 | 72 6f 6c 20 6c 69 73 74 |the cont|rol list|
|000036f0| 20 28 73 79 6d 20 6c 69 | 73 74 20 72 65 73 75 6c | (sym li|st resul|
|00003700| 74 2d 65 78 70 72 29 20 | 2a 2f 0d 20 20 20 20 63 |t-expr) |*/. c|
|00003710| 6c 69 73 74 20 3d 20 78 | 6c 6d 61 74 63 68 28 4c |list = x|lmatch(L|
|00003720| 49 53 54 2c 26 61 72 67 | 73 29 3b 0d 20 20 20 20 |IST,&arg|s);. |
|00003730| 73 79 6d 20 3d 20 78 6c | 6d 61 74 63 68 28 53 59 |sym = xl|match(SY|
|00003740| 4d 2c 26 63 6c 69 73 74 | 29 3b 0d 20 20 20 20 6c |M,&clist|);. l|
|00003750| 69 73 74 20 3d 20 78 6c | 65 76 6d 61 74 63 68 28 |ist = xl|evmatch(|
|00003760| 4c 49 53 54 2c 26 63 6c | 69 73 74 29 3b 0d 0d 20 |LIST,&cl|ist);.. |
|00003770| 20 20 20 2f 2a 20 69 6e | 69 74 69 61 6c 69 7a 65 | /* in|itialize|
|00003780| 20 74 68 65 20 6c 6f 63 | 61 6c 20 65 6e 76 69 72 | the loc|al envir|
|00003790| 6f 6e 6d 65 6e 74 20 2a | 2f 0d 20 20 20 20 78 6c |onment *|/. xl|
|000037a0| 65 6e 76 20 3d 20 78 6c | 66 72 61 6d 65 28 78 6c |env = xl|frame(xl|
|000037b0| 65 6e 76 29 3b 0d 20 20 | 20 20 78 6c 62 69 6e 64 |env);. | xlbind|
|000037c0| 28 73 79 6d 2c 4e 49 4c | 2c 78 6c 65 6e 76 29 3b |(sym,NIL|,xlenv);|
|000037d0| 0d 0d 20 20 20 20 2f 2a | 20 6c 6f 6f 70 20 74 68 |.. /*| loop th|
|000037e0| 72 6f 75 67 68 20 74 68 | 65 20 6c 69 73 74 20 2a |rough th|e list *|
|000037f0| 2f 0d 20 20 20 20 66 6f | 72 20 28 72 62 72 65 61 |/. fo|r (rbrea|
|00003800| 6b 20 3d 20 46 41 4c 53 | 45 3b 20 63 6f 6e 73 70 |k = FALS|E; consp|
|00003810| 28 6c 69 73 74 29 3b 20 | 6c 69 73 74 20 3d 20 63 |(list); |list = c|
|00003820| 64 72 28 6c 69 73 74 29 | 29 20 7b 0d 0d 09 2f 2a |dr(list)|) {.../*|
|00003830| 20 62 69 6e 64 20 74 68 | 65 20 73 79 6d 62 6f 6c | bind th|e symbol|
|00003840| 20 74 6f 20 74 68 65 20 | 6e 65 78 74 20 6c 69 73 | to the |next lis|
|00003850| 74 20 65 6c 65 6d 65 6e | 74 20 2a 2f 0d 09 78 6c |t elemen|t */..xl|
|00003860| 73 65 74 76 61 6c 75 65 | 28 73 79 6d 2c 63 61 72 |setvalue|(sym,car|
|00003870| 28 6c 69 73 74 29 29 3b | 0d 0d 09 2f 2a 20 65 78 |(list));|.../* ex|
|00003880| 65 63 75 74 65 20 74 68 | 65 20 6c 6f 6f 70 20 62 |ecute th|e loop b|
|00003890| 6f 64 79 20 2a 2f 0d 09 | 69 66 20 28 74 61 67 62 |ody */..|if (tagb|
|000038a0| 6c 6f 63 6b 28 61 72 67 | 73 2c 26 72 76 61 6c 29 |lock(arg|s,&rval)|
|000038b0| 29 20 7b 0d 09 20 20 20 | 20 72 62 72 65 61 6b 20 |) {.. | rbreak |
|000038c0| 3d 20 54 52 55 45 3b 0d | 09 20 20 20 20 62 72 65 |= TRUE;.|. bre|
|000038d0| 61 6b 3b 0d 09 7d 0d 20 | 20 20 20 7d 0d 0d 20 20 |ak;..}. | }.. |
|000038e0| 20 20 2f 2a 20 65 76 61 | 6c 75 61 74 65 20 74 68 | /* eva|luate th|
|000038f0| 65 20 72 65 73 75 6c 74 | 20 65 78 70 72 65 73 73 |e result| express|
|00003900| 69 6f 6e 20 2a 2f 0d 20 | 20 20 20 69 66 20 28 21 |ion */. | if (!|
|00003910| 72 62 72 65 61 6b 29 20 | 7b 0d 09 78 6c 73 65 74 |rbreak) |{..xlset|
|00003920| 76 61 6c 75 65 28 73 79 | 6d 2c 4e 49 4c 29 3b 0d |value(sy|m,NIL);.|
|00003930| 09 72 76 61 6c 20 3d 20 | 28 63 6f 6e 73 70 28 63 |.rval = |(consp(c|
|00003940| 6c 69 73 74 29 20 3f 20 | 78 6c 65 76 61 6c 28 63 |list) ? |xleval(c|
|00003950| 61 72 28 63 6c 69 73 74 | 29 29 20 3a 20 4e 49 4c |ar(clist|)) : NIL|
|00003960| 29 3b 0d 20 20 20 20 7d | 0d 0d 20 20 20 20 2f 2a |);. }|.. /*|
|00003970| 20 75 6e 62 69 6e 64 20 | 74 68 65 20 61 72 67 75 | unbind |the argu|
|00003980| 6d 65 6e 74 73 20 2a 2f | 0d 20 20 20 20 78 6c 65 |ments */|. xle|
|00003990| 6e 76 20 3d 20 63 64 72 | 28 78 6c 65 6e 76 29 3b |nv = cdr|(xlenv);|
|000039a0| 0d 0d 20 20 20 20 2f 2a | 20 72 65 73 74 6f 72 65 |.. /*| restore|
|000039b0| 20 74 68 65 20 70 72 65 | 76 69 6f 75 73 20 73 74 | the pre|vious st|
|000039c0| 61 63 6b 20 66 72 61 6d | 65 20 2a 2f 0d 20 20 20 |ack fram|e */. |
|000039d0| 20 78 6c 73 74 61 63 6b | 20 3d 20 6f 6c 64 73 74 | xlstack| = oldst|
|000039e0| 6b 3b 0d 0d 20 20 20 20 | 2f 2a 20 72 65 74 75 72 |k;.. |/* retur|
|000039f0| 6e 20 74 68 65 20 72 65 | 73 75 6c 74 20 2a 2f 0d |n the re|sult */.|
|00003a00| 20 20 20 20 72 65 74 75 | 72 6e 20 28 72 76 61 6c | retu|rn (rval|
|00003a10| 29 3b 0d 7d 0d 0d 2f 2a | 20 78 64 6f 74 69 6d 65 |);.}../*| xdotime|
|00003a20| 73 20 2d 20 73 70 65 63 | 69 61 6c 20 66 6f 72 6d |s - spec|ial form|
|00003a30| 20 27 64 6f 74 69 6d 65 | 73 27 20 2a 2f 0d 4e 4f | 'dotime|s' */.NO|
|00003a40| 44 45 20 2a 78 64 6f 74 | 69 6d 65 73 28 61 72 67 |DE *xdot|imes(arg|
|00003a50| 73 29 0d 20 20 4e 4f 44 | 45 20 2a 61 72 67 73 3b |s). NOD|E *args;|
|00003a60| 0d 7b 0d 20 20 20 20 4e | 4f 44 45 20 2a 63 6c 69 |.{. N|ODE *cli|
|00003a70| 73 74 2c 2a 73 79 6d 2c | 2a 72 76 61 6c 3b 0d 20 |st,*sym,|*rval;. |
|00003a80| 20 20 20 69 6e 74 20 72 | 62 72 65 61 6b 2c 63 6e | int r|break,cn|
|00003a90| 74 2c 69 3b 0d 0d 20 20 | 20 20 2f 2a 20 67 65 74 |t,i;.. | /* get|
|00003aa0| 20 74 68 65 20 63 6f 6e | 74 72 6f 6c 20 6c 69 73 | the con|trol lis|
|00003ab0| 74 20 28 73 79 6d 20 6c | 69 73 74 20 72 65 73 75 |t (sym l|ist resu|
|00003ac0| 6c 74 2d 65 78 70 72 29 | 20 2a 2f 0d 20 20 20 20 |lt-expr)| */. |
|00003ad0| 63 6c 69 73 74 20 3d 20 | 78 6c 6d 61 74 63 68 28 |clist = |xlmatch(|
|00003ae0| 4c 49 53 54 2c 26 61 72 | 67 73 29 3b 0d 20 20 20 |LIST,&ar|gs);. |
|00003af0| 20 73 79 6d 20 3d 20 78 | 6c 6d 61 74 63 68 28 53 | sym = x|lmatch(S|
|00003b00| 59 4d 2c 26 63 6c 69 73 | 74 29 3b 0d 20 20 20 20 |YM,&clis|t);. |
|00003b10| 63 6e 74 20 3d 20 67 65 | 74 66 69 78 6e 75 6d 28 |cnt = ge|tfixnum(|
|00003b20| 78 6c 65 76 6d 61 74 63 | 68 28 49 4e 54 2c 26 63 |xlevmatc|h(INT,&c|
|00003b30| 6c 69 73 74 29 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |list));.|. /* |
|00003b40| 69 6e 69 74 69 61 6c 69 | 7a 65 20 74 68 65 20 6c |initiali|ze the l|
|00003b50| 6f 63 61 6c 20 65 6e 76 | 69 72 6f 6e 6d 65 6e 74 |ocal env|ironment|
|00003b60| 20 2a 2f 0d 20 20 20 20 | 78 6c 65 6e 76 20 3d 20 | */. |xlenv = |
|00003b70| 78 6c 66 72 61 6d 65 28 | 78 6c 65 6e 76 29 3b 0d |xlframe(|xlenv);.|
|00003b80| 20 20 20 20 78 6c 62 69 | 6e 64 28 73 79 6d 2c 4e | xlbi|nd(sym,N|
|00003b90| 49 4c 2c 78 6c 65 6e 76 | 29 3b 0d 0d 20 20 20 20 |IL,xlenv|);.. |
|00003ba0| 2f 2a 20 6c 6f 6f 70 20 | 74 68 72 6f 75 67 68 20 |/* loop |through |
|00003bb0| 66 6f 72 20 65 61 63 68 | 20 76 61 6c 75 65 20 66 |for each| value f|
|00003bc0| 72 6f 6d 20 7a 65 72 6f | 20 74 6f 20 63 6e 74 2d |rom zero| to cnt-|
|00003bd0| 31 20 2a 2f 0d 20 20 20 | 20 66 6f 72 20 28 72 62 |1 */. | for (rb|
|00003be0| 72 65 61 6b 20 3d 20 46 | 41 4c 53 45 2c 20 69 20 |reak = F|ALSE, i |
|00003bf0| 3d 20 30 3b 20 69 20 3c | 20 63 6e 74 3b 20 2b 2b |= 0; i <| cnt; ++|
|00003c00| 69 29 20 7b 0d 0d 09 2f | 2a 20 62 69 6e 64 20 74 |i) {.../|* bind t|
|00003c10| 68 65 20 73 79 6d 62 6f | 6c 20 74 6f 20 74 68 65 |he symbo|l to the|
|00003c20| 20 6e 65 78 74 20 6c 69 | 73 74 20 65 6c 65 6d 65 | next li|st eleme|
|00003c30| 6e 74 20 2a 2f 0d 09 78 | 6c 73 65 74 76 61 6c 75 |nt */..x|lsetvalu|
|00003c40| 65 28 73 79 6d 2c 63 76 | 66 69 78 6e 75 6d 28 28 |e(sym,cv|fixnum((|
|00003c50| 46 49 58 4e 55 4d 29 69 | 29 29 3b 0d 0d 09 2f 2a |FIXNUM)i|));.../*|
|00003c60| 20 65 78 65 63 75 74 65 | 20 74 68 65 20 6c 6f 6f | execute| the loo|
|00003c70| 70 20 62 6f 64 79 20 2a | 2f 0d 09 69 66 20 28 74 |p body *|/..if (t|
|00003c80| 61 67 62 6c 6f 63 6b 28 | 61 72 67 73 2c 26 72 76 |agblock(|args,&rv|
|00003c90| 61 6c 29 29 20 7b 0d 09 | 20 20 20 20 72 62 72 65 |al)) {..| rbre|
|00003ca0| 61 6b 20 3d 20 54 52 55 | 45 3b 0d 09 20 20 20 20 |ak = TRU|E;.. |
|00003cb0| 62 72 65 61 6b 3b 0d 09 | 7d 0d 20 20 20 20 7d 0d |break;..|}. }.|
|00003cc0| 0d 20 20 20 20 2f 2a 20 | 65 76 61 6c 75 61 74 65 |. /* |evaluate|
|00003cd0| 20 74 68 65 20 72 65 73 | 75 6c 74 20 65 78 70 72 | the res|ult expr|
|00003ce0| 65 73 73 69 6f 6e 20 2a | 2f 0d 20 20 20 20 69 66 |ession *|/. if|
|00003cf0| 20 28 21 72 62 72 65 61 | 6b 29 20 7b 0d 09 78 6c | (!rbrea|k) {..xl|
|00003d00| 73 65 74 76 61 6c 75 65 | 28 73 79 6d 2c 63 76 66 |setvalue|(sym,cvf|
|00003d10| 69 78 6e 75 6d 28 28 46 | 49 58 4e 55 4d 29 63 6e |ixnum((F|IXNUM)cn|
|00003d20| 74 29 29 3b 0d 09 72 76 | 61 6c 20 3d 20 28 63 6f |t));..rv|al = (co|
|00003d30| 6e 73 70 28 63 6c 69 73 | 74 29 20 3f 20 78 6c 65 |nsp(clis|t) ? xle|
|00003d40| 76 61 6c 28 63 61 72 28 | 63 6c 69 73 74 29 29 20 |val(car(|clist)) |
|00003d50| 3a 20 4e 49 4c 29 3b 0d | 20 20 20 20 7d 0d 0d 20 |: NIL);.| }.. |
|00003d60| 20 20 20 2f 2a 20 75 6e | 62 69 6e 64 20 74 68 65 | /* un|bind the|
|00003d70| 20 61 72 67 75 6d 65 6e | 74 73 20 2a 2f 0d 20 20 | argumen|ts */. |
|00003d80| 20 20 78 6c 65 6e 76 20 | 3d 20 63 64 72 28 78 6c | xlenv |= cdr(xl|
|00003d90| 65 6e 76 29 3b 0d 0d 20 | 20 20 20 2f 2a 20 72 65 |env);.. | /* re|
|00003da0| 74 75 72 6e 20 74 68 65 | 20 72 65 73 75 6c 74 20 |turn the| result |
|00003db0| 2a 2f 0d 20 20 20 20 72 | 65 74 75 72 6e 20 28 72 |*/. r|eturn (r|
|00003dc0| 76 61 6c 29 3b 0d 7d 0d | 0d 2f 2a 20 78 63 61 74 |val);.}.|./* xcat|
|00003dd0| 63 68 20 2d 20 73 70 65 | 63 69 61 6c 20 66 6f 72 |ch - spe|cial for|
|00003de0| 6d 20 27 63 61 74 63 68 | 27 20 2a 2f 0d 4e 4f 44 |m 'catch|' */.NOD|
|00003df0| 45 20 2a 78 63 61 74 63 | 68 28 61 72 67 73 29 0d |E *xcatc|h(args).|
|00003e00| 20 20 4e 4f 44 45 20 2a | 61 72 67 73 3b 0d 7b 0d | NODE *|args;.{.|
|00003e10| 20 20 20 20 4e 4f 44 45 | 20 2a 2a 2a 6f 6c 64 73 | NODE| ***olds|
|00003e20| 74 6b 2c 2a 74 61 67 2c | 2a 76 61 6c 3b 0d 20 20 |tk,*tag,|*val;. |
|00003e30| 20 20 43 4f 4e 54 45 58 | 54 20 63 6e 74 78 74 3b | CONTEX|T cntxt;|
|00003e40| 0d 0d 20 20 20 20 2f 2a | 20 63 72 65 61 74 65 20 |.. /*| create |
|00003e50| 61 20 6e 65 77 20 73 74 | 61 63 6b 20 66 72 61 6d |a new st|ack fram|
|00003e60| 65 20 2a 2f 0d 20 20 20 | 20 6f 6c 64 73 74 6b 20 |e */. | oldstk |
|00003e70| 3d 20 78 6c 73 74 61 63 | 6b 3b 0d 20 20 20 20 78 |= xlstac|k;. x|
|00003e80| 6c 73 61 76 65 31 28 74 | 61 67 29 3b 0d 0d 20 20 |lsave1(t|ag);.. |
|00003e90| 20 20 2f 2a 20 67 65 74 | 20 74 68 65 20 74 61 67 | /* get| the tag|
|00003ea0| 20 2a 2f 0d 20 20 20 20 | 74 61 67 20 3d 20 78 6c | */. |tag = xl|
|00003eb0| 65 76 61 72 67 28 26 61 | 72 67 73 29 3b 0d 0d 20 |evarg(&a|rgs);.. |
|00003ec0| 20 20 20 2f 2a 20 65 73 | 74 61 62 6c 69 73 68 20 | /* es|tablish |
|00003ed0| 61 6e 20 65 78 65 63 75 | 74 69 6f 6e 20 63 6f 6e |an execu|tion con|
|00003ee0| 74 65 78 74 20 2a 2f 0d | 20 20 20 20 78 6c 62 65 |text */.| xlbe|
|00003ef0| 67 69 6e 28 26 63 6e 74 | 78 74 2c 43 46 5f 54 48 |gin(&cnt|xt,CF_TH|
|00003f00| 52 4f 57 2c 74 61 67 29 | 3b 0d 0d 20 20 20 20 2f |ROW,tag)|;.. /|
|00003f10| 2a 20 63 68 65 63 6b 20 | 66 6f 72 20 27 74 68 72 |* check |for 'thr|
|00003f20| 6f 77 27 20 2a 2f 0d 20 | 20 20 20 69 66 20 28 73 |ow' */. | if (s|
|00003f30| 65 74 6a 6d 70 28 63 6e | 74 78 74 2e 63 5f 6a 6d |etjmp(cn|txt.c_jm|
|00003f40| 70 62 75 66 29 29 0d 09 | 76 61 6c 20 3d 20 78 6c |pbuf))..|val = xl|
|00003f50| 76 61 6c 75 65 3b 0d 0d | 20 20 20 20 2f 2a 20 6f |value;..| /* o|
|00003f60| 74 68 65 72 77 69 73 65 | 2c 20 65 76 61 6c 75 61 |therwise|, evalua|
|00003f70| 74 65 20 74 68 65 20 72 | 65 6d 61 69 6e 64 65 72 |te the r|emainder|
|00003f80| 20 6f 66 20 74 68 65 20 | 61 72 67 75 6d 65 6e 74 | of the |argument|
|00003f90| 73 20 2a 2f 0d 20 20 20 | 20 65 6c 73 65 20 7b 0d |s */. | else {.|
|00003fa0| 09 66 6f 72 20 28 76 61 | 6c 20 3d 20 4e 49 4c 3b |.for (va|l = NIL;|
|00003fb0| 20 63 6f 6e 73 70 28 61 | 72 67 73 29 3b 20 61 72 | consp(a|rgs); ar|
|00003fc0| 67 73 20 3d 20 63 64 72 | 28 61 72 67 73 29 29 0d |gs = cdr|(args)).|
|00003fd0| 09 20 20 20 20 76 61 6c | 20 3d 20 78 6c 65 76 61 |. val| = xleva|
|00003fe0| 6c 28 63 61 72 28 61 72 | 67 73 29 29 3b 0d 20 20 |l(car(ar|gs));. |
|00003ff0| 20 20 7d 0d 20 20 20 20 | 78 6c 65 6e 64 28 26 63 | }. |xlend(&c|
|00004000| 6e 74 78 74 29 3b 0d 0d | 20 20 20 20 2f 2a 20 72 |ntxt);..| /* r|
|00004010| 65 73 74 6f 72 65 20 74 | 68 65 20 70 72 65 76 69 |estore t|he previ|
|00004020| 6f 75 73 20 73 74 61 63 | 6b 20 66 72 61 6d 65 20 |ous stac|k frame |
|00004030| 2a 2f 0d 20 20 20 20 78 | 6c 73 74 61 63 6b 20 3d |*/. x|lstack =|
|00004040| 20 6f 6c 64 73 74 6b 3b | 0d 0d 20 20 20 20 2f 2a | oldstk;|.. /*|
|00004050| 20 72 65 74 75 72 6e 20 | 74 68 65 20 72 65 73 75 | return |the resu|
|00004060| 6c 74 20 2a 2f 0d 20 20 | 20 20 72 65 74 75 72 6e |lt */. | return|
|00004070| 20 28 76 61 6c 29 3b 0d | 7d 0d 0d 2f 2a 20 78 74 | (val);.|}../* xt|
|00004080| 68 72 6f 77 20 2d 20 73 | 70 65 63 69 61 6c 20 66 |hrow - s|pecial f|
|00004090| 6f 72 6d 20 27 74 68 72 | 6f 77 27 20 2a 2f 0d 4e |orm 'thr|ow' */.N|
|000040a0| 4f 44 45 20 2a 78 74 68 | 72 6f 77 28 61 72 67 73 |ODE *xth|row(args|
|000040b0| 29 0d 20 20 4e 4f 44 45 | 20 2a 61 72 67 73 3b 0d |). NODE| *args;.|
|000040c0| 7b 0d 20 20 20 20 4e 4f | 44 45 20 2a 74 61 67 2c |{. NO|DE *tag,|
|000040d0| 2a 76 61 6c 3b 0d 0d 20 | 20 20 20 2f 2a 20 67 65 |*val;.. | /* ge|
|000040e0| 74 20 74 68 65 20 74 61 | 67 20 61 6e 64 20 76 61 |t the ta|g and va|
|000040f0| 6c 75 65 20 2a 2f 0d 20 | 20 20 20 74 61 67 20 3d |lue */. | tag =|
|00004100| 20 78 6c 65 76 61 72 67 | 28 26 61 72 67 73 29 3b | xlevarg|(&args);|
|00004110| 0d 20 20 20 20 76 61 6c | 20 3d 20 28 61 72 67 73 |. val| = (args|
|00004120| 20 3f 20 78 6c 65 76 61 | 72 67 28 26 61 72 67 73 | ? xleva|rg(&args|
|00004130| 29 20 3a 20 4e 49 4c 29 | 3b 0d 20 20 20 20 78 6c |) : NIL)|;. xl|
|00004140| 6c 61 73 74 61 72 67 28 | 61 72 67 73 29 3b 0d 0d |lastarg(|args);..|
|00004150| 20 20 20 20 2f 2a 20 74 | 68 72 6f 77 20 74 68 65 | /* t|hrow the|
|00004160| 20 74 61 67 20 2a 2f 0d | 20 20 20 20 78 6c 74 68 | tag */.| xlth|
|00004170| 72 6f 77 28 74 61 67 2c | 76 61 6c 29 3b 0d 7d 0d |row(tag,|val);.}.|
|00004180| 0d 2f 2a 20 78 65 72 72 | 73 65 74 20 2d 20 73 70 |./* xerr|set - sp|
|00004190| 65 63 69 61 6c 20 66 6f | 72 6d 20 27 65 72 72 73 |ecial fo|rm 'errs|
|000041a0| 65 74 27 20 2a 2f 0d 4e | 4f 44 45 20 2a 78 65 72 |et' */.N|ODE *xer|
|000041b0| 72 73 65 74 28 61 72 67 | 73 29 0d 20 20 4e 4f 44 |rset(arg|s). NOD|
|000041c0| 45 20 2a 61 72 67 73 3b | 0d 7b 0d 20 20 20 20 4e |E *args;|.{. N|
|000041d0| 4f 44 45 20 2a 65 78 70 | 72 2c 2a 66 6c 61 67 2c |ODE *exp|r,*flag,|
|000041e0| 2a 76 61 6c 3b 0d 20 20 | 20 20 43 4f 4e 54 45 58 |*val;. | CONTEX|
|000041f0| 54 20 63 6e 74 78 74 3b | 0d 0d 20 20 20 20 2f 2a |T cntxt;|.. /*|
|00004200| 20 67 65 74 20 74 68 65 | 20 65 78 70 72 65 73 73 | get the| express|
|00004210| 69 6f 6e 20 61 6e 64 20 | 74 68 65 20 70 72 69 6e |ion and |the prin|
|00004220| 74 20 66 6c 61 67 20 2a | 2f 0d 20 20 20 20 65 78 |t flag *|/. ex|
|00004230| 70 72 20 3d 20 78 6c 61 | 72 67 28 26 61 72 67 73 |pr = xla|rg(&args|
|00004240| 29 3b 0d 20 20 20 20 66 | 6c 61 67 20 3d 20 28 61 |);. f|lag = (a|
|00004250| 72 67 73 20 3f 20 78 6c | 61 72 67 28 26 61 72 67 |rgs ? xl|arg(&arg|
|00004260| 73 29 20 3a 20 74 72 75 | 65 29 3b 0d 20 20 20 20 |s) : tru|e);. |
|00004270| 78 6c 6c 61 73 74 61 72 | 67 28 61 72 67 73 29 3b |xllastar|g(args);|
|00004280| 0d 0d 20 20 20 20 2f 2a | 20 65 73 74 61 62 6c 69 |.. /*| establi|
|00004290| 73 68 20 61 6e 20 65 78 | 65 63 75 74 69 6f 6e 20 |sh an ex|ecution |
|000042a0| 63 6f 6e 74 65 78 74 20 | 2a 2f 0d 20 20 20 20 78 |context |*/. x|
|000042b0| 6c 62 65 67 69 6e 28 26 | 63 6e 74 78 74 2c 43 46 |lbegin(&|cntxt,CF|
|000042c0| 5f 45 52 52 4f 52 2c 66 | 6c 61 67 29 3b 0d 0d 20 |_ERROR,f|lag);.. |
|000042d0| 20 20 20 2f 2a 20 63 68 | 65 63 6b 20 66 6f 72 20 | /* ch|eck for |
|000042e0| 65 72 72 6f 72 20 2a 2f | 0d 20 20 20 20 69 66 20 |error */|. if |
|000042f0| 28 73 65 74 6a 6d 70 28 | 63 6e 74 78 74 2e 63 5f |(setjmp(|cntxt.c_|
|00004300| 6a 6d 70 62 75 66 29 29 | 0d 09 76 61 6c 20 3d 20 |jmpbuf))|..val = |
|00004310| 4e 49 4c 3b 0d 0d 20 20 | 20 20 2f 2a 20 6f 74 68 |NIL;.. | /* oth|
|00004320| 65 72 77 69 73 65 2c 20 | 65 76 61 6c 75 61 74 65 |erwise, |evaluate|
|00004330| 20 74 68 65 20 65 78 70 | 72 65 73 73 69 6f 6e 20 | the exp|ression |
|00004340| 2a 2f 0d 20 20 20 20 65 | 6c 73 65 20 7b 0d 09 65 |*/. e|lse {..e|
|00004350| 78 70 72 20 3d 20 78 6c | 65 76 61 6c 28 65 78 70 |xpr = xl|eval(exp|
|00004360| 72 29 3b 0d 09 76 61 6c | 20 3d 20 63 6f 6e 73 61 |r);..val| = consa|
|00004370| 28 65 78 70 72 29 3b 0d | 20 20 20 20 7d 0d 20 20 |(expr);.| }. |
|00004380| 20 20 78 6c 65 6e 64 28 | 26 63 6e 74 78 74 29 3b | xlend(|&cntxt);|
|00004390| 0d 0d 20 20 20 20 2f 2a | 20 72 65 74 75 72 6e 20 |.. /*| return |
|000043a0| 74 68 65 20 72 65 73 75 | 6c 74 20 2a 2f 0d 20 20 |the resu|lt */. |
|000043b0| 20 20 72 65 74 75 72 6e | 20 28 76 61 6c 29 3b 0d | return| (val);.|
|000043c0| 7d 0d 0d 2f 2a 20 64 6f | 62 69 6e 64 69 6e 67 73 |}../* do|bindings|
|000043d0| 20 2d 20 68 61 6e 64 6c | 65 20 62 69 6e 64 69 6e | - handl|e bindin|
|000043e0| 67 73 20 66 6f 72 20 6c | 65 74 2f 6c 65 74 2a 2c |gs for l|et/let*,|
|000043f0| 20 70 72 6f 67 2f 70 72 | 6f 67 2a 2c 20 64 6f 2f | prog/pr|og*, do/|
|00004400| 64 6f 2a 20 2a 2f 0d 4c | 4f 43 41 4c 20 64 6f 62 |do* */.L|OCAL dob|
|00004410| 69 6e 64 69 6e 67 73 28 | 6c 69 73 74 2c 65 6e 76 |indings(|list,env|
|00004420| 29 0d 20 20 4e 4f 44 45 | 20 2a 6c 69 73 74 2c 2a |). NODE| *list,*|
|00004430| 65 6e 76 3b 0d 7b 0d 20 | 20 20 20 4e 4f 44 45 20 |env;.{. | NODE |
|00004440| 2a 2a 2a 6f 6c 64 73 74 | 6b 2c 2a 62 6e 64 2c 2a |***oldst|k,*bnd,*|
|00004450| 73 79 6d 2c 2a 76 61 6c | 3b 0d 0d 20 20 20 20 2f |sym,*val|;.. /|
|00004460| 2a 20 63 72 65 61 74 65 | 20 61 20 6e 65 77 20 73 |* create| a new s|
|00004470| 74 61 63 6b 20 66 72 61 | 6d 65 20 2a 2f 0d 20 20 |tack fra|me */. |
|00004480| 20 20 6f 6c 64 73 74 6b | 20 3d 20 78 6c 73 74 61 | oldstk| = xlsta|
|00004490| 63 6b 3b 0d 20 20 20 20 | 78 6c 73 61 76 65 31 28 |ck;. |xlsave1(|
|000044a0| 76 61 6c 29 3b 0d 0d 20 | 20 20 20 2f 2a 20 62 69 |val);.. | /* bi|
|000044b0| 6e 64 20 65 61 63 68 20 | 73 79 6d 62 6f 6c 20 69 |nd each |symbol i|
|000044c0| 6e 20 74 68 65 20 6c 69 | 73 74 20 6f 66 20 62 69 |n the li|st of bi|
|000044d0| 6e 64 69 6e 67 73 20 2a | 2f 0d 20 20 20 20 66 6f |ndings *|/. fo|
|000044e0| 72 20 28 3b 20 63 6f 6e | 73 70 28 6c 69 73 74 29 |r (; con|sp(list)|
|000044f0| 3b 20 6c 69 73 74 20 3d | 20 63 64 72 28 6c 69 73 |; list =| cdr(lis|
|00004500| 74 29 29 20 7b 0d 0d 09 | 2f 2a 20 67 65 74 20 74 |t)) {...|/* get t|
|00004510| 68 65 20 6e 65 78 74 20 | 62 69 6e 64 69 6e 67 20 |he next |binding |
|00004520| 2a 2f 0d 09 62 6e 64 20 | 3d 20 63 61 72 28 6c 69 |*/..bnd |= car(li|
|00004530| 73 74 29 3b 0d 0d 09 2f | 2a 20 68 61 6e 64 6c 65 |st);.../|* handle|
|00004540| 20 61 20 73 79 6d 62 6f | 6c 20 2a 2f 0d 09 69 66 | a symbo|l */..if|
|00004550| 20 28 73 79 6d 62 6f 6c | 70 28 62 6e 64 29 29 20 | (symbol|p(bnd)) |
|00004560| 7b 0d 09 20 20 20 20 73 | 79 6d 20 3d 20 62 6e 64 |{.. s|ym = bnd|
|00004570| 3b 0d 09 20 20 20 20 76 | 61 6c 20 3d 20 4e 49 4c |;.. v|al = NIL|
|00004580| 3b 0d 09 7d 0d 0d 09 2f | 2a 20 68 61 6e 64 6c 65 |;..}.../|* handle|
|00004590| 20 61 20 6c 69 73 74 20 | 6f 66 20 74 68 65 20 66 | a list |of the f|
|000045a0| 6f 72 6d 20 28 73 79 6d | 62 6f 6c 20 65 78 70 72 |orm (sym|bol expr|
|000045b0| 29 20 2a 2f 0d 09 65 6c | 73 65 20 69 66 20 28 63 |) */..el|se if (c|
|000045c0| 6f 6e 73 70 28 62 6e 64 | 29 29 20 7b 0d 09 20 20 |onsp(bnd|)) {.. |
|000045d0| 20 20 73 79 6d 20 3d 20 | 78 6c 6d 61 74 63 68 28 | sym = |xlmatch(|
|000045e0| 53 59 4d 2c 26 62 6e 64 | 29 3b 0d 09 20 20 20 20 |SYM,&bnd|);.. |
|000045f0| 76 61 6c 20 3d 20 78 6c | 65 76 61 72 67 28 26 62 |val = xl|evarg(&b|
|00004600| 6e 64 29 3b 0d 09 7d 0d | 09 65 6c 73 65 0d 09 20 |nd);..}.|.else.. |
|00004610| 20 20 20 78 6c 66 61 69 | 6c 28 22 62 61 64 20 62 | xlfai|l("bad b|
|00004620| 69 6e 64 69 6e 67 22 29 | 3b 0d 0d 09 2f 2a 20 62 |inding")|;.../* b|
|00004630| 69 6e 64 20 74 68 65 20 | 76 61 6c 75 65 20 74 6f |ind the |value to|
|00004640| 20 74 68 65 20 73 79 6d | 62 6f 6c 20 2a 2f 0d 09 | the sym|bol */..|
|00004650| 78 6c 62 69 6e 64 28 73 | 79 6d 2c 76 61 6c 2c 65 |xlbind(s|ym,val,e|
|00004660| 6e 76 29 3b 0d 20 20 20 | 20 7d 0d 0d 20 20 20 20 |nv);. | }.. |
|00004670| 2f 2a 20 72 65 73 74 6f | 72 65 20 74 68 65 20 70 |/* resto|re the p|
|00004680| 72 65 76 69 6f 75 73 20 | 73 74 61 63 6b 20 66 72 |revious |stack fr|
|00004690| 61 6d 65 20 2a 2f 0d 20 | 20 20 20 78 6c 73 74 61 |ame */. | xlsta|
|000046a0| 63 6b 20 3d 20 6f 6c 64 | 73 74 6b 3b 0d 7d 0d 0d |ck = old|stk;.}..|
|000046b0| 2f 2a 20 64 6f 75 70 64 | 61 74 65 73 20 2d 20 68 |/* doupd|ates - h|
|000046c0| 61 6e 64 6c 65 20 75 70 | 64 61 74 65 73 20 66 6f |andle up|dates fo|
|000046d0| 72 20 64 6f 2f 64 6f 2a | 20 2a 2f 0d 64 6f 75 70 |r do/do*| */.doup|
|000046e0| 64 61 74 65 73 28 6c 69 | 73 74 2c 70 66 6c 61 67 |dates(li|st,pflag|
|000046f0| 29 0d 20 20 4e 4f 44 45 | 20 2a 6c 69 73 74 3b 20 |). NODE| *list; |
|00004700| 69 6e 74 20 70 66 6c 61 | 67 3b 0d 7b 0d 20 20 20 |int pfla|g;.{. |
|00004710| 20 4e 4f 44 45 20 2a 2a | 2a 6f 6c 64 73 74 6b 2c | NODE **|*oldstk,|
|00004720| 2a 70 6c 69 73 74 2c 2a | 62 6e 64 2c 2a 73 79 6d |*plist,*|bnd,*sym|
|00004730| 2c 2a 76 61 6c 3b 0d 0d | 20 20 20 20 2f 2a 20 63 |,*val;..| /* c|
|00004740| 72 65 61 74 65 20 61 20 | 6e 65 77 20 73 74 61 63 |reate a |new stac|
|00004750| 6b 20 66 72 61 6d 65 20 | 2a 2f 0d 20 20 20 20 6f |k frame |*/. o|
|00004760| 6c 64 73 74 6b 20 3d 20 | 78 6c 73 74 61 63 6b 3b |ldstk = |xlstack;|
|00004770| 0d 20 20 20 20 78 6c 73 | 74 6b 63 68 65 63 6b 28 |. xls|tkcheck(|
|00004780| 32 29 3b 0d 20 20 20 20 | 78 6c 73 61 76 65 28 70 |2);. |xlsave(p|
|00004790| 6c 69 73 74 29 3b 0d 20 | 20 20 20 78 6c 73 61 76 |list);. | xlsav|
|000047a0| 65 28 76 61 6c 29 3b 0d | 0d 20 20 20 20 2f 2a 20 |e(val);.|. /* |
|000047b0| 62 69 6e 64 20 65 61 63 | 68 20 73 79 6d 62 6f 6c |bind eac|h symbol|
|000047c0| 20 69 6e 20 74 68 65 20 | 6c 69 73 74 20 6f 66 20 | in the |list of |
|000047d0| 62 69 6e 64 69 6e 67 73 | 20 2a 2f 0d 20 20 20 20 |bindings| */. |
|000047e0| 66 6f 72 20 28 3b 20 63 | 6f 6e 73 70 28 6c 69 73 |for (; c|onsp(lis|
|000047f0| 74 29 3b 20 6c 69 73 74 | 20 3d 20 63 64 72 28 6c |t); list| = cdr(l|
|00004800| 69 73 74 29 29 20 7b 0d | 0d 09 2f 2a 20 67 65 74 |ist)) {.|../* get|
|00004810| 20 74 68 65 20 6e 65 78 | 74 20 62 69 6e 64 69 6e | the nex|t bindin|
|00004820| 67 20 2a 2f 0d 09 62 6e | 64 20 3d 20 63 61 72 28 |g */..bn|d = car(|
|00004830| 6c 69 73 74 29 3b 0d 0d | 09 2f 2a 20 68 61 6e 64 |list);..|./* hand|
|00004840| 6c 65 20 61 20 6c 69 73 | 74 20 6f 66 20 74 68 65 |le a lis|t of the|
|00004850| 20 66 6f 72 6d 20 28 73 | 79 6d 62 6f 6c 20 65 78 | form (s|ymbol ex|
|00004860| 70 72 29 20 2a 2f 0d 09 | 69 66 20 28 63 6f 6e 73 |pr) */..|if (cons|
|00004870| 70 28 62 6e 64 29 29 20 | 7b 0d 09 20 20 20 20 73 |p(bnd)) |{.. s|
|00004880| 79 6d 20 3d 20 78 6c 6d | 61 74 63 68 28 53 59 4d |ym = xlm|atch(SYM|
|00004890| 2c 26 62 6e 64 29 3b 0d | 09 20 20 20 20 62 6e 64 |,&bnd);.|. bnd|
|000048a0| 20 3d 20 63 64 72 28 62 | 6e 64 29 3b 0d 09 20 20 | = cdr(b|nd);.. |
|000048b0| 20 20 69 66 20 28 62 6e | 64 29 20 7b 0d 09 09 76 | if (bn|d) {...v|
|000048c0| 61 6c 20 3d 20 78 6c 65 | 76 61 72 67 28 26 62 6e |al = xle|varg(&bn|
|000048d0| 64 29 3b 0d 09 09 69 66 | 20 28 70 66 6c 61 67 29 |d);...if| (pflag)|
|000048e0| 0d 09 09 20 20 20 20 70 | 6c 69 73 74 20 3d 20 63 |... p|list = c|
|000048f0| 6f 6e 73 28 63 6f 6e 73 | 28 73 79 6d 2c 76 61 6c |ons(cons|(sym,val|
|00004900| 29 2c 70 6c 69 73 74 29 | 3b 0d 09 09 65 6c 73 65 |),plist)|;...else|
|00004910| 0d 09 09 20 20 20 20 78 | 6c 73 65 74 76 61 6c 75 |... x|lsetvalu|
|00004920| 65 28 73 79 6d 2c 76 61 | 6c 29 3b 0d 09 20 20 20 |e(sym,va|l);.. |
|00004930| 20 7d 0d 09 7d 0d 20 20 | 20 20 7d 0d 0d 20 20 20 | }..}. | }.. |
|00004940| 20 2f 2a 20 73 65 74 20 | 74 68 65 20 76 61 6c 75 | /* set |the valu|
|00004950| 65 73 20 66 6f 72 20 70 | 61 72 61 6c 6c 65 6c 20 |es for p|arallel |
|00004960| 75 70 64 61 74 65 73 20 | 2a 2f 0d 20 20 20 20 66 |updates |*/. f|
|00004970| 6f 72 20 28 3b 20 70 6c | 69 73 74 3b 20 70 6c 69 |or (; pl|ist; pli|
|00004980| 73 74 20 3d 20 63 64 72 | 28 70 6c 69 73 74 29 29 |st = cdr|(plist))|
|00004990| 0d 09 78 6c 73 65 74 76 | 61 6c 75 65 28 63 61 72 |..xlsetv|alue(car|
|000049a0| 28 63 61 72 28 70 6c 69 | 73 74 29 29 2c 63 64 72 |(car(pli|st)),cdr|
|000049b0| 28 63 61 72 28 70 6c 69 | 73 74 29 29 29 3b 0d 0d |(car(pli|st)));..|
|000049c0| 20 20 20 20 2f 2a 20 72 | 65 73 74 6f 72 65 20 74 | /* r|estore t|
|000049d0| 68 65 20 70 72 65 76 69 | 6f 75 73 20 73 74 61 63 |he previ|ous stac|
|000049e0| 6b 20 66 72 61 6d 65 20 | 2a 2f 0d 20 20 20 20 78 |k frame |*/. x|
|000049f0| 6c 73 74 61 63 6b 20 3d | 20 6f 6c 64 73 74 6b 3b |lstack =| oldstk;|
|00004a00| 0d 7d 0d 0d 2f 2a 20 74 | 61 67 62 6c 6f 63 6b 20 |.}../* t|agblock |
|00004a10| 2d 20 65 78 65 63 75 74 | 65 20 63 6f 64 65 20 77 |- execut|e code w|
|00004a20| 69 74 68 69 6e 20 61 20 | 62 6c 6f 63 6b 20 61 6e |ithin a |block an|
|00004a30| 64 20 74 61 67 62 6f 64 | 79 20 2a 2f 0d 69 6e 74 |d tagbod|y */.int|
|00004a40| 20 74 61 67 62 6c 6f 63 | 6b 28 63 6f 64 65 2c 70 | tagbloc|k(code,p|
|00004a50| 76 61 6c 29 0d 20 20 4e | 4f 44 45 20 2a 63 6f 64 |val). N|ODE *cod|
|00004a60| 65 2c 2a 2a 70 76 61 6c | 3b 0d 7b 0d 20 20 20 20 |e,**pval|;.{. |
|00004a70| 43 4f 4e 54 45 58 54 20 | 63 6e 74 78 74 3b 0d 20 |CONTEXT |cntxt;. |
|00004a80| 20 20 20 69 6e 74 20 74 | 79 70 65 2c 73 74 73 3b | int t|ype,sts;|
|00004a90| 0d 0d 20 20 20 20 2f 2a | 20 65 73 74 61 62 6c 69 |.. /*| establi|
|00004aa0| 73 68 20 61 6e 20 65 78 | 65 63 75 74 69 6f 6e 20 |sh an ex|ecution |
|00004ab0| 63 6f 6e 74 65 78 74 20 | 2a 2f 0d 20 20 20 20 78 |context |*/. x|
|00004ac0| 6c 62 65 67 69 6e 28 26 | 63 6e 74 78 74 2c 43 46 |lbegin(&|cntxt,CF|
|00004ad0| 5f 47 4f 7c 43 46 5f 52 | 45 54 55 52 4e 2c 63 6f |_GO|CF_R|ETURN,co|
|00004ae0| 64 65 29 3b 0d 0d 20 20 | 20 20 2f 2a 20 63 68 65 |de);.. | /* che|
|00004af0| 63 6b 20 66 6f 72 20 61 | 20 27 72 65 74 75 72 6e |ck for a| 'return|
|00004b00| 27 20 2a 2f 0d 20 20 20 | 20 69 66 20 28 28 74 79 |' */. | if ((ty|
|00004b10| 70 65 20 3d 20 73 65 74 | 6a 6d 70 28 63 6e 74 78 |pe = set|jmp(cntx|
|00004b20| 74 2e 63 5f 6a 6d 70 62 | 75 66 29 29 20 3d 3d 20 |t.c_jmpb|uf)) == |
|00004b30| 43 46 5f 52 45 54 55 52 | 4e 29 20 7b 0d 09 2a 70 |CF_RETUR|N) {..*p|
|00004b40| 76 61 6c 20 3d 20 78 6c | 76 61 6c 75 65 3b 0d 09 |val = xl|value;..|
|00004b50| 73 74 73 20 3d 20 54 52 | 55 45 3b 0d 20 20 20 20 |sts = TR|UE;. |
|00004b60| 7d 0d 0d 20 20 20 20 2f | 2a 20 6f 74 68 65 72 77 |}.. /|* otherw|
|00004b70| 69 73 65 2c 20 65 6e 74 | 65 72 20 74 68 65 20 62 |ise, ent|er the b|
|00004b80| 6f 64 79 20 2a 2f 0d 20 | 20 20 20 65 6c 73 65 20 |ody */. | else |
|00004b90| 7b 0d 0d 09 2f 2a 20 63 | 68 65 63 6b 20 66 6f 72 |{.../* c|heck for|
|00004ba0| 20 61 20 27 67 6f 27 20 | 2a 2f 0d 09 69 66 20 28 | a 'go' |*/..if (|
|00004bb0| 74 79 70 65 20 3d 3d 20 | 43 46 5f 47 4f 29 0d 09 |type == |CF_GO)..|
|00004bc0| 20 20 20 20 63 6f 64 65 | 20 3d 20 78 6c 76 61 6c | code| = xlval|
|00004bd0| 75 65 3b 0d 0d 09 2f 2a | 20 65 76 61 6c 75 61 74 |ue;.../*| evaluat|
|00004be0| 65 20 65 61 63 68 20 65 | 78 70 72 65 73 73 69 6f |e each e|xpressio|
|00004bf0| 6e 20 69 6e 20 74 68 65 | 20 62 6f 64 79 20 2a 2f |n in the| body */|
|00004c00| 0d 09 66 6f 72 20 28 3b | 20 63 6f 6e 73 70 28 63 |..for (;| consp(c|
|00004c10| 6f 64 65 29 3b 20 63 6f | 64 65 20 3d 20 63 64 72 |ode); co|de = cdr|
|00004c20| 28 63 6f 64 65 29 29 0d | 09 20 20 20 20 69 66 20 |(code)).|. if |
|00004c30| 28 63 6f 6e 73 70 28 63 | 61 72 28 63 6f 64 65 29 |(consp(c|ar(code)|
|00004c40| 29 29 0d 09 09 78 6c 65 | 76 61 6c 28 63 61 72 28 |))...xle|val(car(|
|00004c50| 63 6f 64 65 29 29 3b 0d | 0d 09 2f 2a 20 66 65 6c |code));.|../* fel|
|00004c60| 6c 20 6f 75 74 20 74 68 | 65 20 62 6f 74 74 6f 6d |l out th|e bottom|
|00004c70| 20 6f 66 20 74 68 65 20 | 6c 6f 6f 70 20 2a 2f 0d | of the |loop */.|
|00004c80| 09 2a 70 76 61 6c 20 3d | 20 4e 49 4c 3b 0d 09 73 |.*pval =| NIL;..s|
|00004c90| 74 73 20 3d 20 46 41 4c | 53 45 3b 0d 20 20 20 20 |ts = FAL|SE;. |
|00004ca0| 7d 0d 20 20 20 20 78 6c | 65 6e 64 28 26 63 6e 74 |}. xl|end(&cnt|
|00004cb0| 78 74 29 3b 0d 0d 20 20 | 20 20 2f 2a 20 72 65 74 |xt);.. | /* ret|
|00004cc0| 75 72 6e 20 73 74 61 74 | 75 73 20 2a 2f 0d 20 20 |urn stat|us */. |
|00004cd0| 20 20 72 65 74 75 72 6e | 20 28 73 74 73 29 3b 0d | return| (sts);.|
|00004ce0| 7d 0d 0d 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00004cf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004d00| 00 00 01 00 00 00 01 16 | 00 00 00 16 00 00 00 46 |........|.......F|
|00004d10| 00 00 12 50 52 45 53 00 | 03 0b 49 6d 61 67 65 77 |...PRES.|..Imagew|
|00004d20| 72 69 74 65 72 00 00 00 | 15 43 4c 49 50 00 03 0e |riter...|.CLIP...|
|00004d30| 08 78 6c 63 6f 6e 74 2e | 63 00 02 00 00 00 54 45 |.xlcont.|c.....TE|
|00004d40| 58 54 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |XT......|........|
|00004d50| 00 00 54 45 58 54 00 00 | 00 00 00 00 00 00 00 00 |..TEXT..|........|
|00004d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004d70| 00 00 9b 2f 58 f7 00 00 | 4c 63 00 00 01 5c 09 00 |.../X...|Lc...\..|
|00004d80| 00 90 09 00 00 90 08 ff | ff 10 08 00 00 10 08 00 |........|........|
|00004d90| 00 10 08 00 00 10 08 00 | 00 10 08 00 ff 10 08 00 |........|........|
|00004da0| 00 10 08 00 00 10 08 00 | 00 10 08 00 00 10 07 ff |........|........|
|00004db0| ff e0 04 00 00 20 04 00 | 00 20 04 00 00 20 07 ff |..... ..|. ... ..|
|00004dc0| ff e0 00 00 00 00 07 ff | ff e0 0f ff ff f0 0f ff |........|........|
|00004dd0| ff f0 0f ff ff f0 0f ff | ff f0 0f ff ff f0 0f ff |........|........|
|00004de0| ff f0 0f ff ff f0 0f ff | ff f0 0f ff ff f0 0f ff |........|........|
|00004df0| ff f0 0f ff ff f0 0f ff | ff f0 0f ff ff f0 0f ff |........|........|
|00004e00| 00 00 00 0a 00 09 06 4d | 6f 6e 61 63 6f 61 00 00 |.......M|onacoa..|
|00004e10| 00 04 00 06 00 08 00 00 | 01 00 00 00 01 16 00 00 |........|........|
|00004e20| 00 16 00 00 00 46 00 00 | cc 24 02 94 00 00 00 1c |.....F..|.$......|
|00004e30| 00 46 00 01 45 46 4e 54 | 00 00 00 12 45 54 41 42 |.F..EFNT|....ETAB|
|00004e40| 00 00 00 1e 03 eb ff ff | 00 00 00 00 00 01 97 b4 |........|........|
|00004e50| 03 ec ff ff 00 00 00 0e | 00 01 97 bc 00 00 00 00 |........|........|
|00004e60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004e70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+